RethinkDB's first community client driver is for Haskell
rethinkdb.com
rethinkdb.com
It already is! Each expression is a simple wrapper around a monad, similar to this datatype:
data Expr = Expr (QueryM Term)
Where QueryM is the monad that helps build the query and Term is the raw protobuf expression that gets sent to the server.