{-# LANGUAGE OverlappingInstances, UndecidableInstances #-}
module Data.TypeEq (
    -- * Type equality
    TypeEq,
    typeEq
) where
    -- Data
    import Data.Boolean

    class TypeEq type1 type2 result | type1 type2 -> result where
        typeEq :: type1 -> type2 -> result

    instance TypeEq soleType soleType True where
        typeEq _ _ = true

    instance (result ~ False) => TypeEq type1 type2 result where
        typeEq _ _ = false
