
Yes indeed, Nomic couldn't be fully coded, only a subset of it could be.
Rules that are outside of the box cannot be expressed, the goal is, to
have the largest box possible!
Your rule:
* Players must stand when proposing new rules.
couldn't be coded directly, of course, since the computer has no
sensor to detect the position of player ;)
But it could be indirectly. Your rule could be coded like that:
Full rule tiltle: "Players must stand when proposing new rules"
Code when filtering a proposed rule: A question is asked to all
players except the author of the rule: "Does Player X stood when he
proposed this rule?" A vast majority of "Yes" must be acknowlegded to
accept the rule.
On the other hand, if we choose not to interpret the rules, the
program could just be a configuration management system for rules.
It could be a web site that maintain active rules, allow player voting etc.
Corentin.
On 4/15/10, Brent Yorgey
On Wed, Apr 14, 2010 at 09:14:18PM +0200, Dupont Corentin wrote:
Hello Café, do you know Nomic?
It's 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!
www.nomic.net
I'm wondering if it could be possible to implement a Nomic (or an helper for the game) in Haskell. Haskell seems appropriate for that, since functions are first order objects, and Haskell is good at DSLs.
I don't think you could actually implement Nomic in the way you describe, because any system you come up with will necessarily place restrictions on what sorts of rules you are able to represent. Much of the fun of Nomic lies in coming up with new rules that are completely outside the box. For example, how would you encode a rule like
* Players must stand when proposing new rules.
or
* Rules which do not mention other rules shall remain in effect until such time as the mobile telephone of the Grand Counselor rings.
You get the idea.
However, implementing some sort of system for encoding certain types of rules, and checking that they are valid/consistent/etc. sounds like it could be a fun project from which you would probably learn a lot! Essentially, you would be designing a syntax for rules, and a type system for ensuring that rules are valid or used in valid ways. It wouldn't be Nomic, but it could be something fun.
-Brent _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe