{-# language DefaultSignatures #-} module Data.Constructors.EqC (EqC(..)) where import Data.Function (on) import Data.Data (Data,toConstr) class EqC a where -- | Compare the outermost constructor for a datatype. -- Instances should satisfy @eqConstr (C a) (K b) = True@ iff C=K eqConstr :: a -> a -> Bool default eqConstr :: Data a => a -> a -> Bool eqConstr = on (==) toConstr