On Fri, Mar 16, 2012 at 12:30:13PM +0100, Twan van Laarhoven wrote:
>
> If you want to avoid the side effects of boolTest2 when boolTest1
> returns true, you will need to implement a monadic or, something like
>
> orM ma mb = do
> a <- ma
> if a then return True else mb
Note
Rouan van Dalen wrote:
> I was wondering if I can make assumptions about the evaluation order
> of the following code:
Nitpick: This is execution order, not evaluation order. The evaluation
order is indeed undefined here.
Greets,
Ertugrul
--
nightmare = unsafePerformIO (getWrongWife >>= se
As usual you can check:
Prelude Control.Applicative> pure (||) <*> pure True <*> undefined
*** Exception: Prelude.undefined
Prelude Control.Applicative> (||) True undefined
True
2012/3/16 Rouan van Dalen
> Hi everyone.
>
> I was wondering if I can make assumptions about the evaluation order
On 16/03/12 10:45, Rouan van Dalen wrote:
Hi everyone.
I was wondering if I can make assumptions about the evaluation order of
the following code:
isTrue :: Int -> IO Bool
isTrue val = pure (||) <*> boolTest1 val <*> boolTest2 val
{- boolTest1 is an inexpensive, quick check -}
boolTest1 :: In
Hi everyone.
I was wondering if I can make assumptions about the evaluation order of
the following code:
isTrue :: Int -> IO Bool
isTrue val = pure (||) <*> boolTest1 val <*> boolTest2 val
{- boolTest1 is an inexpensive, quick check -}
boolTest1 :: Int -> IO Bool
boolTest1 val = undefined
{-