• Simon Peyton Jones's avatar
    Allow recursive unwrapping of data families · 0b7e538a
    Simon Peyton Jones authored
    When doing strictness analysis, we need to look inside products.
    To avoid unpacking infinitely, we must be careful about
    infinite types.  That in turn is controlled by TyCon.checkRecTc.
    For data families like
       data instance T (a,b) = MkT a (T b)
    we want to unpack the thing recursively for types like
      T (Int, (Int, (Int, Int)))
    This patch elaborates the checkRecTc mechanism in TyCon, to
    maintain a *count* of how many times a TyCon has shown up,
    rather than just a boolean.
    A simple change, and a useful one.  Fixes Trac #10482.
Coercion.hs 78.5 KB