plutus
plutus copied to clipboard
Investigate call-by-need semantics for `force`-`delay`
Currently the following UPLC pseudocode:
let y = delay e
in f (\_ -> force y) + g (\_ -> force y)
will evaluate e twice if both f and g evaluate force y once.
If we used some sort of call-by-need semantics specifically for delay and force, e would only be evaluated twice.
This is worth investigating, I believe.