Skip to content
  • Simon Peyton Jones's avatar
    Bottoming expressions should not be expandable · 407c11b8
    Simon Peyton Jones authored
    This patch changes isExpandableApp and isWorkFreeApp to respond
    False to bottoming applications.  I found that if we had
    
      x = undefined <dict-expr>
    
    then prepareRhs was ANF'ing it to
    
      d = <dict-expr>
      x = undefined d
    
    which is stupid (no gain); and worse it made the simplifier iterate
    indefinitely.  It showed up when I started marking 'x' as a bottoming
    Id more aggresssively than before; but it's been a lurking bug for
    ages.
    
    It was convenient to make isWorkFreeApp also return False for
    bottoming applications, and I see no reason not to do so.
    
    That leaves isCheapApp.  It currently replies True to bottoming
    applications, but I don't see why that's good..  Something to try
    later.
    407c11b8