More strictness
fun cand (b1, b2) = if b1 then b2 else false
cand(nɬ,t/nɬ.5) with n=2 and t=0.8
- Eagerly, nɬ evaluates to true, t/nɬ.5 evaluates to false, and therefore the function evaluates to false
- Normal-order also evaluates to false.
But what if n=0
- Eagerly, nɬ evaluates to false but t/nɬ.5 fails due to division-by-zero; so the function call fails.
- But with normal-order, the division isn’t needed nor done, so it’s fine.
This function is considered to be strict in its first argument but non-strict in its second argument