<div class="gmail_quote"><br>
Hello Café,<br>
do you know Nomic?<br><br>
It&#39;s a fabulous and strange game where you have the right to change the
rules in the middle of the game!<br>
In fact, changing the rules is the goal of the game. Changing a rule is considered as a move. <br>Of course even that could be changed!<br>
<br>
<a href="http://www.nomic.net" target="_blank">www.nomic.net</a><br>
<br>
I&#39;m wondering if it could be possible to implement a Nomic (or an helper
for the game) in Haskell.<br>
Haskell seems appropriate for that, since functions are first order
objects, and Haskell is good at DSLs.<br>
<br>
What I think, is creating a DSL where a rule could be expressed as a
function, or a monad.<br>
Many kinds of rules could be expressed:<br>
1. - a rule that says that player #1 must be named Grand Counselor.<br>
2. - a rule that says that the following rules must be voted at the
majority, and how.<br>
3. - a rule that says that the money is the ECU.<br>
4. - a rule that says that if a rule is accepted, the author is awarded 1
ECU.<br>
5. - a rule that says that all rules must have a name.<br>
6. - a rule that says that democracy is abolished. God save the King,
Player #1!<br>
7. - a rule that says that a rule mustn&#39;t suppress another.<br>
<br>
As you can see, the rules are highly self-referencing!<br>
some rules, like #1, describes a protocol, involving IO (players voting).<br>
some rules, like #7, could be implemented with a test over new rules (that rule could test
proposed rules against rule suppression).<br>
some rules, like #5, must inspect the code of other rules.<br>
<br>
A proposed rule must pass all active rule&#39;s criterias to become active.<br>
Once active, a rule should be applyed immediatly to all active rules, and
to all futur rules, until it is repealed.<br>
<br>
Any comments?<br>
<br>
Cheers,<br>
Corentin<br>
<br>
<br>
<br>
</div><br>