* Am 03.04.07 schrieb Isaac Dupree:
> 
> Sebastian Hanowski wrote:
> > 
> >        False && undefined --> False 
> >        True || undefined  --> True      
> > 
> > but
> > 
> >         liftM2 (&&) (Now False) never ~= never
> >         liftM2 (||) (Now True) never ~= never
> 
> As you show, they keep their short circuiting behavior - as well as
> gaining symmetric short-circuiting behavior such that (flip (&&)) =
> (&&), for example...?  How do they "seem to" lose their short circuiting
> behavior?-- I think at least one of us isn't understanding the other one
> yet.

I wanted to  point out that the pure boolean  functions don't care about
their second  arguments in the  given cases whereas the  lifted versions
do.

> > Seems that the delay monad is not an applicative functor.
> 
> Aren't ALL monads applicative functors? (though not the converse), with:
> pure = return
> (<*>) = ap

Of course you're right.  The behaviour of the lifted &&  and || is even
better  described  with applicative  functors  because  it's typical
that every effect  is performed. Which in this case is non-termination.

I  had wanted  to be  speculating  about the  delay monad  not beeing  a
/traversable functor/.
But I still need to consider this further, sorry.


Best regards,
Sebastian

Reply via email to