Note [Sharing in zonking]
Suppose we have alpha :-> beta :-> gamma :-> ty where the ":->" means that the unification variable has been filled in with Indirect. Then when zonking alpha, it'd be nice to short-circuit beta too, so we end up with alpha :-> zty beta :-> zty gamma :-> zty where zty is the zonked version of ty. That way, if we come across beta later, we'll have less work to do. (And indeed the same for alpha.) This is easily achieved: just overwrite (Indirect ty) with (Indirect zty). Non-systematic perf comparisons suggest that this is a modest win. But c.f Note [Sharing when zonking to Type] in GHC.Tc.Zonk.Type. %************************************************************************ %* * Zonking rewriter sets * * ************************************************************************
References 1
- Sharing when zonking to Type GHC.Tc.Zonk.Type
Referenced by 3
- Sharing when zonking to Type GHC.Tc.Zonk.Type ×2
- GHC.Tc.Zonk.TcType call site