{-# LANGUAGE RankNTypes , TypeInType #-} -------------------------------------------------------------------------------- -- | -- Module : Data.Expression.Utils.Indexed.Eq -- Copyright : (C) 2017-18 Jakub Daniel -- License : BSD-style (see the file LICENSE) -- Maintainer : Jakub Daniel -- Stability : experimental -------------------------------------------------------------------------------- module Data.Expression.Utils.Indexed.Eq where -- | Indexed types that can be equated class IEq (a :: i -> *) where ieq :: forall j. a j -> a j -> Bool -- | Type constructors (usually functors) that produce types that can be equated class IEq1 (f :: (i -> *) -> (i -> *)) where ieq1 :: forall a j. IEq a => f a j -> f a j -> Bool