The Remote JSON library

JSON-RPC is a simple and well supported protocol for remote procedure calls over HTTP, supporting both synchronous remote methods calls and asynchronous notifications. We want to access JSON-RPC from Haskell, but in a principled way. This blog post discusses the design and user-facing interface of remote-json, a new library for JSON-RPC that makes use of the remote monad design pattern

Shells and the Remote Monad Design Pattern

The remote monad design pattern is a way of encapsulating external monadic capabilities. The idea is that, rather than directly call a remote or external procedure, we instead give the external procedure call a service-specific monadic type, and invoke the external procedure call using a monadic “send” function. Specifically, a remote monad is a monad that has its evaluation function in a remote location, outside the local runtime system. This blog article, the first in a series, examines reflecting shell commands for accessing external data from Haskell. We will look at the PlistBuddy OSX UNIX command, its internal shell, and how to provide access to this shell for Haskell users.

2 New KU FPG Papers

Two papers from the University of Kansas Functional Programming Group have been accepted for publication at Haskell’15! One about using HERMIT for equational reasoning, and the other about a monad-based design pattern for remote control that externalizes monadic execution. We’ve put the preprints on our webpage.