[Haskell-cafe] is the evaluation order deterministic when using applicative with IO

2012-03-16 Thread Rouan van Dalen
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 {-

Re: [Haskell-cafe] is the evaluation order deterministic when using applicative with IO

2012-03-16 Thread Twan van Laarhoven
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 :: Int -

Re: [Haskell-cafe] is the evaluation order deterministic when using applicative with IO

2012-03-16 Thread Dmitry Olshansky
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 rvda...@yahoo.co.uk Hi everyone. I was wondering if I can make assumptions about the

Re: [Haskell-cafe] is the evaluation order deterministic when using applicative with IO

2012-03-16 Thread Ertugrul Söylemez
Rouan van Dalen rvda...@yahoo.co.uk 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

Re: [Haskell-cafe] is the evaluation order deterministic when using applicative with IO

2012-03-16 Thread Brent Yorgey
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 also