Skip to content

Give up on strict-arg and strict-let stuff in Simplifier

Recently, we saw multiple problems relating to eta-expansion and (case) floating (#19970, #20273) that could be worked around if GHC didn't do the strict-arg transformation

f (case e of p -> rhs)   ==>   case e of p -> f rhs

Note that the LHS has richer scoping information than the RHS and it's easier to float stuff from the LHS.

Simon suggested in a call that we should see what breaks if we don't do it. CorePrep will ultimately do the transformation ("call-by-value") anyway, so we can just defer doing so until then.

Edited by Sebastian Graf
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information