haste-compiler icon indicating copy to clipboard operation
haste-compiler copied to clipboard

How to do server-side state with the current version? (liftServerIO is gone)

Open WolframKahl opened this issue 8 years ago • 3 comments

I find examples for using server-side state in the Haskell ’14 paper and in haste-compiler/examples/chatbox/chatbox.hs, but these rely on liftServerIO, which is not part of the new Haste anymore.

How can server-sider state be implemented with the new remote $ static (import_ f) pattern?

WolframKahl avatar Sep 06 '16 02:09 WolframKahl

For the time being, I got it to work using unsafePerformIO $ ... newIORef ..., but this is not very satisfying...

WolframKahl avatar Sep 06 '16 05:09 WolframKahl

For 0.6, it's still unclear how this will be implemented, since it will support multiple servers among other things. Currently I'm leaning towards putting this into the same class instance as the routing information, bit this isn't set in stone so suggestions are very welcome.

Haste.App.Simple will probably implement something very similar to liftServerIO for the Server special case, since Simple already provides a Node instance for Server.

valderman avatar Sep 06 '16 07:09 valderman

In the new Haste.App, server-side state is implemented using the init method of the Node type class, which is executed on node startup. Its return value is used as the environment of the node. Please see the paper for more details.

valderman avatar Aug 31 '17 21:08 valderman