John Meacham wrote:
> f x y 
>    | b > c = ...
>    | c <= 0 && a > b = ...
>    where
>         a = ...
>         b <- ...
>         c <- ...
> f x y = ...
> 
> there is really no clean (IMHO) way to express this idiom otherwise,

What does this translate to (even if not clean)?
I am not sure I understand what this is supposed
to do.

It looks like the guards depend on things computed
inside the monad, so I guess you want the guard
code put at the end of the monadic code.

But then, by the time you get to the guards, you may
have already created side effects in the monad. So
running the second version of f after failing the
first version is not equivalent to running the second
version by itself. Or am I missing something?

Thanks,
Yitz
_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to