module Data.Universe.Instances.Ord (
	-- | An 'Ord' instance for functions, given the input is 'Finite' and the
	-- output is 'Ord'. Compares pointwise, with higher priority to inputs
	-- that appear earlier in 'universeF'.
	) where

import Data.Monoid
import Data.Universe
import Data.Universe.Instances.Eq

instance (Finite a, Ord b) => Ord (a -> b) where
	f `compare` g = mconcat [f x `compare` g x | x <- universeF]