Announcing a new Haskell JSON RPC library, remote-json, that uses the remote monad to bundle remote procedure calls, amortizing the cost of remote execution. There are thee bundling strategies provided: 

 * weak (calls done one at a time), 
 * strong (calls bundled until a reply is needed, where possible), and 
 * applicative (an applicative functor is sent to the remote JSON RPC server).

Example of use:

say :: Text -> RPC ()
say msg = notification "say" (List [String msg])

temperature :: RPC Int
temperature = method "temperature" None

main :: IO ()
main = do
  let s = strongSession $ clientSendAPI "http://www.wibble.com/wobble"
  t <- send s $ do
                say "Hello, "
                say "World!"
                temperature
  print t

Blog:
 * http://ku-fpg.github.io/2016/02/09/remote-json/

Hackage:
 * http://hackage.haskell.org/package/remote-json
 * http://hackage.haskell.org/package/remote-json-client
 * http://hackage.haskell.org/package/remote-json-server

Github:
 * https://github.com/ku-fpg/remote-json

Andy Gill & Justin Dawson