[Haskell-cafe] return in Monad class necessary?

Reinier Lamers reinier.lamers at phil.uu.nl
Tue Nov 27 04:14:53 EST 2007


Chris Eidhof wrote:

> On 26 nov 2007, at 19:48, Henning Thielemann wrote:
>
>> I wonder whether it is a typical mistake of beginners
>> to write 'return' within a do-block (that is, not at the end)
>> and if it is possible to avoid this mistake by clever typing.
>> In a proper monad 'return' can be fused with subsequent actions,
>> and thus it is not necessary within a sequence of actions.
>> However, although sensible, 'return' is also not required at the end  
>> of a block.
>> Has someone already thought about a replacement for monads?
>
> I also made that mistake in the beginning, I used return instead of  
> lets. I don't think it's a big problem, most users will find out once  
> they've got some more experience, and it doesn't really do any harm.

It might be possible for the compiler to emit a warning when a return is 
used in the middle of a do block as the top level operator on a line. 
OTOH, that still wouldn't catch something like "when (x == 0) (return 
())" which doesn't do what an imperative programmer expects.

Reinier


More information about the Haskell-Cafe mailing list