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