[Haskell-cafe] Are constructors strict?

Daryoush Mehrtash dmehrtash at gmail.com
Fri Jan 21 11:52:41 CET 2011


>  loop = MonadPlus m => m Bool
>
 loop = loop
>

> If we apply Just to loop as follows
>

>  test2 :: MonadPlus m => m (Maybe Bool)
>
 test2 = loop >>= return . Just
>

> the evaluation of test2 does not terminate because >>= has to evaluate
> loop. But this does not correctly reflect the behaviour in a functional
> logic language like Curry. For example, if you have a function that checks
> whether the outermost constructor of test2 is Just, the test is supposed to
> be successful. In the naive model for non-determinism this is not the case.
>

Do I have to have MonadPlus m or would any other Monad class work the same
way?

-- 
Daryoush

Weblog:  http://perlustration.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110121/90188b95/attachment.htm>


More information about the Haskell-Cafe mailing list