Alexander V Vershilov wrote:
I'm writing a small tcp server with that can handle connections and
answer by rules writen in a small script that can be interpreted by server.
For this purpose I've written an interpreter that has type
ErrorT MyError (StateT ScriptState IO)
so I can call "native" IO function in that script, and define new one.
I can run this script with runState (runErrorT (...)) oldState.
But there is one problem: in script i should be able to call functions that
will stop script interpretation and wait for some server event. To continue
interpretation.
Can smb give an advice what is the best way to do it?
Basically, you want to stop the interpreter and resume it at some later
point. You need to implement a custom monad for that, which can easily
be done with the help of my operational package.
http://projects.haskell.org/operational/
In particular, the examples
WebSessionState.lhs
TicTacToe.hs
PoorMansConcurrency.hs
show how to suspend and resume the control flow. Feel free to request
additional examples.
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe