
Ah, I see. I erroneously assumed binary operators would be defined in
similar ways but I realize that's perhaps naive because with addition
you're never not going to evaluate both sides, unlike with booleans.
That's interesting. Thanks for responding.
On Sun, Dec 23, 2018, 2:26 PM Ian Denhardt There are no guarantees about in what order these things will be
evaluated. The compiler is well within its rights to evaluate
the expressions in any order, or more than once even (though IIRC
ghc never does the latter). The left-to-right ordering holds for &&
because the Haskell report specifically defines[1] it as: True && x = x
False && _ = False In this case the compiler can't in general evaluate the RHS first,
because if the LHS is False and the RHS is bottom, this would be
incorrect. But this is due to the semantics of &&, and doesn't hold in
general. -Ian [1]:
https://www.haskell.org/onlinereport/haskell2010/haskellch9.html#x16-1710009 Quoting erik (2018-12-23 15:19:04) Tom,
Why does "b" evaluate before "a" in your example? I would have thought
left-hand and then right-hand if needed. I'm on my phone but I'd like
to try the same example with booleans and `&&` instead of `+`.
Erik
On Sat, Dec 22, 2018, 11:40 PM Tom Ellis
<[1]tom-lists-haskell-cafe-2017@jaguarpaw.co.uk wrote: On Sat, Dec 22, 2018 at 09:52:18AM +0100, Damien Mattei wrote:
> i have inserted trace statement that output variable
> ... i have strange behavior of output:
Let's take a simpler example.� Do you understand why the trace
statments
from this small program appear in the order that they do?� (And for
what
it's worth I really think you'll be better off writing programs
using do
notation).
% cat test.hs
import Debug.Trace
result =
� let a = trace "evaluating a" 2
� � � b = trace "evaluating b" 10
� � � c = trace "evaluating c" (a + b)
� in c
~% ghci -e result test.hs
evaluating c
evaluating b
evaluating a
12
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
[2]http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post. Verweise 1. mailto:tom-lists-haskell-cafe-2017@jaguarpaw.co.uk
2. http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe