{-# LANGUAGE CPP #-}
#if __GLASGOW_HASKELL__ >=704
{-# LANGUAGE Safe #-}
#elif __GLASGOW_HASKELL__ >=702
{-# LANGUAGE Trustworthy #-}
#endif
module Data.Universe.Instances.Eq (
-- | An 'Eq' instance for functions, given the input is 'Finite' and the
-- output is 'Eq'. Compares pointwise.
Eq(..)
) where
import Data.Monoid
import Data.Universe.Class
instance (Finite a, Eq b) => Eq (a -> b) where
f == g = and [f x == g x | x <- universeF]
instance (Finite a, Eq a) => Eq (Endo a) where
Endo f == Endo g = f == g