This loop-breaking module is used solely to braek the loops caused by SPECIALIZE pragmas. \begin{code} interface SpecLoop where import RdrHsSyn ( RdrName ) import Name ( Name, OccName ) import TyVar ( GenTyVar ) import TyCon ( TyCon ) import Class ( GenClass, GenClassOp ) import Id ( GenId ) import Unique ( Unique, Uniquable(..) ) import MachRegs ( Reg ) import CLabel ( CLabel ) data RdrName data GenClass a b data GenClassOp a data GenId a -- NB: fails the optimisation criterion data GenTyVar a -- NB: fails the optimisation criterion data Name data OccName data TyCon data Unique data Reg data CLabel class Uniquable a where uniqueOf :: a -> Unique -- SPECIALIZing in FiniteMap instance Eq Reg instance Eq CLabel instance Eq OccName instance Eq RdrName instance Eq (GenId a) instance Eq TyCon instance Eq (GenClass a b) instance Eq Unique instance Eq Name instance Ord Reg instance Ord CLabel instance Ord OccName instance Ord RdrName instance Ord (GenId a) instance Ord TyCon instance Ord (GenClass a b) instance Ord Unique instance Ord Name -- SPECIALIZing in UniqFM, UniqSet instance Uniquable (GenId a) instance Uniquable TyCon instance Uniquable (GenClass a b) instance Uniquable Unique instance Uniquable Name -- SPECIALIZing in Name \end{code}