• Simon Peyton Jones's avatar
    Improve TcFlatten.flattenTyVar · a7ee2d4c
    Simon Peyton Jones authored
    This patch tides up the structure, simplifying FlattenTvResult.
    It also replaces a use of zonkTcType (which I hated) with
    coercionKind, in that same function.  Happily, the result is
    little faster, maybe even a percentage point or two, which is
    a lot for a compiler.
    This also removes the line
       || not (map binderVisibility bndrs1 == map binderVisibility bndrs2)
    from TcCanonical.can_eq_nc', in the ForAllTy/ForAllTy case.
    Why? Becuase I can't see why binder-visiblity should matter, and
    when we use coercionKind instead of zonkTcType in flattenTyVar,
    this case pops up and rejects a program that should pass.  I did
    discuss this with Richard.
TcFlatten.hs 58.3 KB