Skip to content
  • Simon Peyton Jones's avatar
    Make rule-matching robust to lets · 7656f8c4
    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