Simplify the IdInfo before any RHSs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Simplfy (i.e. substitute) the IdInfo of a recursive group of Ids before looking at the RHSs of *any* of them. That way, the rules are available throughout the letrec, which means we don't have to be careful about function to put first. Before, we just simplified the IdInfo of f before looking at f's RHS, but that's not so good when f and g both have RULES, and both rules mention the other. This change makes things simpler, but shouldn't change performance.
Showing with 169 additions and 153 deletions