Free monads

Daniel Díaz Carrete diaz.carrete
Thu Oct 3 18:51:40 UTC 2013


Andres L?h <andres <at> well-typed.com> writes:

> 
> Hi everyone.
> 
> I'll follow Simon's lead, and ask a similar question with a similar
> motivation. I'm going to talk about free monads at the upcoming
> Haskell eXchange next Wednesday. I'll not limit myself to a particular
> library, and I'm open to related approaches (e.g. "operational") as
> well.
> 
> I'm also looking for as many compelling examples as possible. Like
> Simon, I don't want to know anything secret or anything that you
> wouldn't like me to include in my talk. Most useful are pointers to
> existing libraries using free monads that I might have missed (for
> example, because they're new or very specialized).
> 
> Thanks a lot for your help in advance.
> 
> Cheers,
>   Andres
> 

I my "pianola" package, I use a free monad (in module Pianola.Protocol) to 
abstract away the connection details of RPC calls, along with the 
reading/writing from the handles.

I use another free monad (in module Pianola.Pianola, but not exported) to 
sequence observational interactions with an external object accessed through 
the network. The functor is the Kleisli arrow of a monad. The observations 
can return no results, or more than one result. Depending on the 
interpreter, more than one result can be treated as an error, or at least 
merit a warning. The current interpreter just chooses the first  result and 
keeps going.

Cheers.

http://hackage.haskell.org/package/pianola-0.1.1
http://hackage.haskell.org/package/pianola-0.1.1/docs/Pianola-Protocol.html
http://hackage.haskell.org/package/pianola-0.1.1/docs/src/Pianola-
Pianola.html





More information about the Libraries mailing list