Open
Description
I believe lambox' evaluation strategy is strict by default.
However in the AST there are two nodes for lazy and force:
We may want to compile some things lazily. Not everything, as this would introduce too much overhead, but for example, stdlib's if_then_else_
should definitely be compiled to lazy branches, so that only one of them gets evaluated.
Alternatively, if_then_else_
compiles to a case on the boolean, so if it is marked as INLINE
then no problem, but it isn't, and lambox call-by-value semantics means both branches would get evaluated when calling if_then_else_
.