For some time, GHC has made -fallow-overlapping-instances "sticky":
any instance in a module compiled with -fallow-overlapping-instances
can overlap when imported, regardless of whether the importing module
allows overlap. (If there is an overlap, both instances must come from
modules thus compiled.)
Instances in Data.Typeable might well want to be overlapped, so this
commit adds the flag to Data.Typeable (with an explanatory comment)
-{-# OPTIONS_GHC -fno-implicit-prelude #-}
+{-# OPTIONS_GHC -fno-implicit-prelude -fallow-overlapping-instances #-}
+
+-- The -fallow-overlapping-instances flag allows the user to over-ride
+-- the instances for Typeable given here. In particular, we provide an instance
+-- instance ... => Typeable (s a)
+-- But a user might want to say
+-- instance ... => Typeable (MyType a b)
+
-----------------------------------------------------------------------------
-- |
-- Module : Data.Typeable
-----------------------------------------------------------------------------
-- |
-- Module : Data.Typeable