
12 Apr
2019
12 Apr
'19
11:21 p.m.
I don't understand how laziness enters the picture:
(False && ⊥) && ⊥ ≡ False False && (⊥ && ⊥) ≡ False
in both cases we get the same result.
The first expression builds two thunks before trying the leftmost operand, and the second one only builds one thunk. More generally, a left-associative conjunction of n lazy Bools will build n - 1 thunks at once when forced, but a right-associative one will have only one at a time, though it may have to iterate through all n - 1 before finishing.