module Data.Semilattice ( Semilattice , (<>) ) where import Data.Semigroup (Semigroup) import qualified Data.Semigroup as Semigroup {- | A semilattice. It may be a join-semilattice, or meet-semilattice, it doesn't matter. If it matters for you, use package @lattices@. In addition to 'Semigroup', Semilattice defines this laws: [commutativity] @x '<>' y == y '<>' x@ [idempotency] @x '<>' x == x@ -} class Semigroup a => Semilattice a -- | Just ('Semigroup.<>'), specialized to 'Semilattice'. (<>) :: Semilattice a => a -> a -> a (<>) = (Semigroup.<>) infixr 6 <> {-# INLINE (<>) #-}