{-# LANGUAGE DeriveTraversable, GeneralizedNewtypeDeriving #-} -- | 'Lower' and 'Upper' bounds from 'Bounded' instances. module Data.Semilattice.Bound where import Data.Semilattice.Lower import Data.Semilattice.Upper -- | A convenience bridging 'Bounded' to 'Lower' and 'Upper'. newtype Bound a = Bound { getBound :: a } deriving (Bounded, Enum, Eq, Foldable, Functor, Num, Ord, Read, Show, Traversable) instance Bounded a => Lower (Bound a) instance Bounded a => Upper (Bound a)