{-# LANGUAGE CPP #-}
module TypeLevel.Rewrite.Internal.TypeEq where

import Data.Function

#if MIN_VERSION_ghc(9,0,0)
import GHC.Plugins (Type, eqType)
#else
import GhcPlugins (Type, eqType)
#endif


-- | A newtype around 'Type' which has an 'Eq' instance.
newtype TypeEq = TypeEq
  { TypeEq -> Type
unTypeEq :: Type
  }

instance Eq TypeEq where
  == :: TypeEq -> TypeEq -> Bool
(==) = Type -> Type -> Bool
eqType (Type -> Type -> Bool)
-> (TypeEq -> Type) -> TypeEq -> TypeEq -> Bool
forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
`on` TypeEq -> Type
unTypeEq