I've written a blog post about this topic, distilled out of some fairly gnarly code in Ur/Web that ping-ponged pure computation back and forth between the server (FFI) and the client (higher order functions): http://blog.ezyang.com/2012/07/managing-the-server-client-split-in-ur-web/ Hope this assists some folks! Cheers, Edward