Hi Corentin

It looks like you are writing the event handler on the server side. If
so, the range of events you can handle is fixed to just those you
implement handlers for - having an openly extensible event type is
useless if this is the case.

Ignoring client/server for a moment, a function (State -> State) would
be the most "extensible" API you could allow for clients. You don't
need to worry about an open set of Event types, a client knows the
state exactly and doesn't need extensibility.

Client/Server operation won't allow a state transformer API as Haskell
can't readily serialize functions. But you can implement a "command
language" enumerating state changing operations. The second Quickcheck
paper gives a very good example of how to implement such a command
language.


Testing Monadic Code with QuickCheck (2002)
Koen Claessen , John Hughes
www.cse.chalmers.se/~rjmh/Papers/QuickCheckST.ps

Or Citeseer if you need a PDF:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.19.9275

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to