-
Simon Peyton Jones authored
Consider a RULE like forall arr. splitD (joinD arr) = arr Until now, this rule would not match code of form splitD (let { d = ... } in joinD (...d...)) because the 'let' got in the way. This patch makes the rule-matcher robust to lets. See comments with the Let case of Rules.match. This improvement is highly desirable in the fusion rules for NDP stuff that Roman is working on, where we are doing fusion of *overloaded* functions (which may look lazy). The let expression that Roman tripped up on was a dictioary binding.
7656f8c4