[Haskell] Re: Mixing monadic and non-monadic functions

Aaron Denney wnoise at ofb.net
Fri Sep 9 23:12:05 EDT 2005

On 2005-09-09, Frederik Eaton <frederik at a5.repetae.net> wrote:
>> I thought the easy answer would be to inject non-monadic values into the
>> monad (assuming one already rejiggered things to do automatic lifting).
> I don't know if this is the right way of looking at it. Do you have an
> example?

In a do block, 
1 + [2,3,4] 

would get turned into
liftM2 (+) (return 1) [2, 3, 4]

(I actually think this whole thing is a horrible idea, much for the
reasons Cale Gibbard puts forward.)

> Would it mean treating the 'Monad' class specially? Perhaps, but I
> don't think this is a reason to avoid it. Further, it is likely that
> whatever is done to extend the type checker could be given a general
> interface, which Monad would simply take advantage of, using a
> meta-declaration in the same spirit as "infixr" etc.

Well, monads are already treated specially -- the whole do syntax.

Aaron Denney

More information about the Haskell mailing list