Added an interface to Transform using a free monad. A similar thing
should be done for Filter (though this is quite hard).