A Nomic game in haskell

Latest on Hackage:1.0.0

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed by Corentin Dupont

Build Status Hackage


A Nomic game in Haskell

Nomyx is a fabulous and strange game where you have the right to change the rules in the middle of the game! In fact, changing the rules is the goal of the game. Changing a rule is considered as a move. Of course even that could be changed! In this game, the player can enter new rules in a dedicated language, modify existing ones, thus changing completely the behaviour of the game!

The web site:


You need a Haskell platform running on your system. To install from the Hackage release, follow this procedure:

cabal install Nomyx-Language --enable-documentation --haddock-hyperlink-source
cabal install Nomyx

To install from the GitHub repo:

git clone
cabal install Nomyx-Language/ --enable-documentation --haddock-hyperlink-source

git clone
cabal install Nomyx/


Launch with the command:

$ Nomyx

and follow the instructions. You may connect using a web browser to the provided address.


See GitHub issues for known bugs. Tested on Haskell-Platform 2012.1.0.0 and ghc 7.6.3


- use Lens library
- use happstack-authenticate 2
- suppress MsgVar and ArrayVar
- add an API based on message passing to allow rules to communicate between them
- new package Library

- full FRP engine for managing events
- dynamic events: event tree is recomputed at each request
- event is now an instance of Monad, MonadPlus
- added typeclass "Shortcut" for interruptible events
- bug fixes, cosmetics

- added composable events: events have now an Applicative and Alternative interfaces
- moved the Engine part from Nomyx-Language to Nomyx-Core. Nomyx-Language now contains only the DSL useful for the player.
- bug fixes, cosmetics

- split the game into 4 packages: Nomyx-Language, Nomyx-Core, Nomyx-Web and Nomyx.
- use Eason for serialization
- use Travis for continuous integration
- protect the game againts malicious codes (a la mueval)
- separate effectful instructions from non effectful instructions in the DSL
- possibility to fork games to test own rules in a sandbox game
- "check rule" button to type check a rule
- bug fixes, cosmetics

- created language APIs
- building on Windows (thanks to Michael Steele)
- tar file for downloading game save files
- outputs includes viewers (not only players)
- splitted Definition into Events, Inputs, Outputs, Players, Variables

- creation of admin role
- inputs made by the rules now include checkboxes, buttons, textarea
- outputs made by the rules are now managed (create, update, delete)
- refactored the GUI
- bumped to GHC 7.6
- compilation errors are displayed in context
- bug fixes

- new login system: you can now login with your Google, Yahoo, Live Journal, Myspace, OpenId or Facebook accounts (thanks to happstack-authenticate)!
- new DSL for voting
- styling: rule code colorized, better settings and help
- use cookies to store the user ID (as suggested on this mailing list)
- new error system to handle exceptions in rules (with ErrorT)
- use lenses

comments powered byDisqus