{-# LANGUAGE DataKinds #-} {-# LANGUAGE ExplicitNamespaces #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} module Versioning.Internal.Equality (type (==)) where import Data.Type.Bool (type (&&)) -- | A type family to compute Boolean equality. -- We can't use the one from "Data.Type.Equality" because -- before 8.4 it was not poly-kinded. type family (a :: k) == (b :: k) :: Bool where f a == g b = f == g && a == b a == a = 'True _ == _ = 'False