connections-0.0.3: Partial orders, Galois connections, and lattices.

Safe HaskellSafe
LanguageHaskell2010

Data.Semilattice

Contents

Synopsis

Documentation

type (-) (g :: k1 -> k) (f :: k -> k2) (a :: k1) = f (g a) infixr 1 #

Hyphenation operator.

Join semilattices

newtype Join a Source #

A commutative Semigroup under .

Constructors

Join 

Fields

Instances
Functor Join Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

fmap :: (a -> b) -> Join a -> Join b #

(<$) :: a -> Join b -> Join a #

Applicative Join Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

pure :: a -> Join a #

(<*>) :: Join (a -> b) -> Join a -> Join b #

liftA2 :: (a -> b -> c) -> Join a -> Join b -> Join c #

(*>) :: Join a -> Join b -> Join b #

(<*) :: Join a -> Join b -> Join a #

Eq a => Eq (Join a) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(==) :: Join a -> Join a -> Bool #

(/=) :: Join a -> Join a -> Bool #

Ord a => Ord (Join a) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

compare :: Join a -> Join a -> Ordering #

(<) :: Join a -> Join a -> Bool #

(<=) :: Join a -> Join a -> Bool #

(>) :: Join a -> Join a -> Bool #

(>=) :: Join a -> Join a -> Bool #

max :: Join a -> Join a -> Join a #

min :: Join a -> Join a -> Join a #

Show a => Show (Join a) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

showsPrec :: Int -> Join a -> ShowS #

show :: Join a -> String #

showList :: [Join a] -> ShowS #

Generic (Join a) Source # 
Instance details

Defined in Data.Semigroup.Join

Associated Types

type Rep (Join a) :: Type -> Type #

Methods

from :: Join a -> Rep (Join a) x #

to :: Rep (Join a) x -> Join a #

Semigroup (Join Bool) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Int) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join Int -> Join Int -> Join Int #

sconcat :: NonEmpty (Join Int) -> Join Int #

stimes :: Integral b => b -> Join Int -> Join Int #

Semigroup (Join Int8) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Int16) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Int32) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Int64) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Integer) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Natural) Source # 
Instance details

Defined in Data.Semigroup.Join

(Join - Semigroup) a => Semigroup (Join (Maybe a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join (Maybe a) -> Join (Maybe a) -> Join (Maybe a) #

sconcat :: NonEmpty (Join (Maybe a)) -> Join (Maybe a) #

stimes :: Integral b => b -> Join (Maybe a) -> Join (Maybe a) #

Semigroup (Join Word) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Word8) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Word16) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Word32) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Word64) Source # 
Instance details

Defined in Data.Semigroup.Join

((Join - Semigroup) a, (Join - Semigroup) b) => Semigroup (Join (Either a b)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join (Either a b) -> Join (Either a b) -> Join (Either a b) #

sconcat :: NonEmpty (Join (Either a b)) -> Join (Either a b) #

stimes :: Integral b0 => b0 -> Join (Either a b) -> Join (Either a b) #

Semigroup (Join ()) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join () -> Join () -> Join () #

sconcat :: NonEmpty (Join ()) -> Join () #

stimes :: Integral b => b -> Join () -> Join () #

((Join - Semigroup) a, (Join - Semigroup) b) => Semigroup (Join (a, b)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join (a, b) -> Join (a, b) -> Join (a, b) #

sconcat :: NonEmpty (Join (a, b)) -> Join (a, b) #

stimes :: Integral b0 => b0 -> Join (a, b) -> Join (a, b) #

Semigroup (Join Uni) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join Uni -> Join Uni -> Join Uni #

sconcat :: NonEmpty (Join Uni) -> Join Uni #

stimes :: Integral b => b -> Join Uni -> Join Uni #

Semigroup (Join Deci) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Centi) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Milli) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Micro) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Nano) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Join Pico) Source # 
Instance details

Defined in Data.Semigroup.Join

Semigroup (Max a) => Semigroup (Join (Max a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join (Max a) -> Join (Max a) -> Join (Max a) #

sconcat :: NonEmpty (Join (Max a)) -> Join (Max a) #

stimes :: Integral b => b -> Join (Max a) -> Join (Max a) #

(Meet - Semigroup) a => Semigroup (Join (Down a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join (Down a) -> Join (Down a) -> Join (Down a) #

sconcat :: NonEmpty (Join (Down a)) -> Join (Down a) #

stimes :: Integral b => b -> Join (Down a) -> Join (Down a) #

(Join - Semigroup) a => Semigroup (Join (IntMap a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join (IntMap a) -> Join (IntMap a) -> Join (IntMap a) #

sconcat :: NonEmpty (Join (IntMap a)) -> Join (IntMap a) #

stimes :: Integral b => b -> Join (IntMap a) -> Join (IntMap a) #

Semigroup (Join IntSet) Source # 
Instance details

Defined in Data.Semigroup.Join

(Ord k, (Join - Semigroup) a) => Semigroup (Join (Map k a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join (Map k a) -> Join (Map k a) -> Join (Map k a) #

sconcat :: NonEmpty (Join (Map k a)) -> Join (Map k a) #

stimes :: Integral b => b -> Join (Map k a) -> Join (Map k a) #

Ord a => Semigroup (Join (Set a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Join (Set a) -> Join (Set a) -> Join (Set a) #

sconcat :: NonEmpty (Join (Set a)) -> Join (Set a) #

stimes :: Integral b => b -> Join (Set a) -> Join (Set a) #

Semigroup (Join Ulp32) Source # 
Instance details

Defined in Data.Float

Ord a => Semigroup (Join (MaxMin a)) Source # 
Instance details

Defined in Data.Semilattice.MaxMin

Methods

(<>) :: Join (MaxMin a) -> Join (MaxMin a) -> Join (MaxMin a) #

sconcat :: NonEmpty (Join (MaxMin a)) -> Join (MaxMin a) #

stimes :: Integral b => b -> Join (MaxMin a) -> Join (MaxMin a) #

(Minimal a, Semifield a) => Semigroup (Join (N5 a)) Source # 
Instance details

Defined in Data.Semilattice.N5

Methods

(<>) :: Join (N5 a) -> Join (N5 a) -> Join (N5 a) #

sconcat :: NonEmpty (Join (N5 a)) -> Join (N5 a) #

stimes :: Integral b => b -> Join (N5 a) -> Join (N5 a) #

(Join - Semigroup) a => Semigroup (Join (Top a)) Source # 
Instance details

Defined in Data.Semilattice.Top

Methods

(<>) :: Join (Top a) -> Join (Top a) -> Join (Top a) #

sconcat :: NonEmpty (Join (Top a)) -> Join (Top a) #

stimes :: Integral b => b -> Join (Top a) -> Join (Top a) #

Monoid (Join Bool) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Int) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Int8) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Int16) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Int32) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Int64) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Natural) Source # 
Instance details

Defined in Data.Semigroup.Join

(Join - Semigroup) a => Monoid (Join (Maybe a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

mempty :: Join (Maybe a) #

mappend :: Join (Maybe a) -> Join (Maybe a) -> Join (Maybe a) #

mconcat :: [Join (Maybe a)] -> Join (Maybe a) #

Monoid (Join Word) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Word8) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Word16) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Word32) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join Word64) Source # 
Instance details

Defined in Data.Semigroup.Join

Monoid (Join ()) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

mempty :: Join () #

mappend :: Join () -> Join () -> Join () #

mconcat :: [Join ()] -> Join () #

(Minimal a, Semigroup (Max a)) => Monoid (Join (Max a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

mempty :: Join (Max a) #

mappend :: Join (Max a) -> Join (Max a) -> Join (Max a) #

mconcat :: [Join (Max a)] -> Join (Max a) #

(Meet - Monoid) a => Monoid (Join (Down a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

mempty :: Join (Down a) #

mappend :: Join (Down a) -> Join (Down a) -> Join (Down a) #

mconcat :: [Join (Down a)] -> Join (Down a) #

(Join - Semigroup) a => Monoid (Join (IntMap a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

mempty :: Join (IntMap a) #

mappend :: Join (IntMap a) -> Join (IntMap a) -> Join (IntMap a) #

mconcat :: [Join (IntMap a)] -> Join (IntMap a) #

Monoid (Join IntSet) Source # 
Instance details

Defined in Data.Semigroup.Join

(Ord k, (Join - Semigroup) a) => Monoid (Join (Map k a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

mempty :: Join (Map k a) #

mappend :: Join (Map k a) -> Join (Map k a) -> Join (Map k a) #

mconcat :: [Join (Map k a)] -> Join (Map k a) #

Ord a => Monoid (Join (Set a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

mempty :: Join (Set a) #

mappend :: Join (Set a) -> Join (Set a) -> Join (Set a) #

mconcat :: [Join (Set a)] -> Join (Set a) #

(Ord a, Minimal a) => Monoid (Join (MaxMin a)) Source # 
Instance details

Defined in Data.Semilattice.MaxMin

Methods

mempty :: Join (MaxMin a) #

mappend :: Join (MaxMin a) -> Join (MaxMin a) -> Join (MaxMin a) #

mconcat :: [Join (MaxMin a)] -> Join (MaxMin a) #

(Minimal a, Semifield a) => Monoid (Join (N5 a)) Source # 
Instance details

Defined in Data.Semilattice.N5

Methods

mempty :: Join (N5 a) #

mappend :: Join (N5 a) -> Join (N5 a) -> Join (N5 a) #

mconcat :: [Join (N5 a)] -> Join (N5 a) #

(Join - Monoid) a => Monoid (Join (Top a)) Source # 
Instance details

Defined in Data.Semilattice.Top

Methods

mempty :: Join (Top a) #

mappend :: Join (Top a) -> Join (Top a) -> Join (Top a) #

mconcat :: [Join (Top a)] -> Join (Top a) #

type Rep (Join a) Source # 
Instance details

Defined in Data.Semigroup.Join

type Rep (Join a) = D1 (MetaData "Join" "Data.Semigroup.Join" "connections-0.0.3-DlJXNVSUPF02JVkbDQVocy" True) (C1 (MetaCons "Join" PrefixI True) (S1 (MetaSel (Just "unJoin") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))

bottom :: (Join - Monoid) a => a Source #

(∨) :: (Join - Semigroup) a => a -> a -> a infixr 5 Source #

Join operation on a semilattice.

>>> (> (0::Int)) ∧ ((< 10) ∨ (== 15)) $ 10
False
>>> IntSet.fromList [1..5] ∧ IntSet.fromList [2..5]
fromList [2,3,4,5]

join :: (Join - Monoid) a => Lattice a => Foldable f => f a -> a Source #

joinWith :: (Join - Monoid) a => Foldable t => (b -> a) -> t b -> a Source #

join1 :: Lattice a => Foldable1 f => f a -> a Source #

The join of a list of join-semilattice elements (of length at least top)

joinWith1 :: Foldable1 t => Lattice a => (b -> a) -> t b -> a Source #

Fold over a non-empty collection using the join operation of an arbitrary join semilattice.

Meet semilattices

newtype Meet a Source #

Constructors

Meet 

Fields

Instances
Functor Meet Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

fmap :: (a -> b) -> Meet a -> Meet b #

(<$) :: a -> Meet b -> Meet a #

Applicative Meet Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

pure :: a -> Meet a #

(<*>) :: Meet (a -> b) -> Meet a -> Meet b #

liftA2 :: (a -> b -> c) -> Meet a -> Meet b -> Meet c #

(*>) :: Meet a -> Meet b -> Meet b #

(<*) :: Meet a -> Meet b -> Meet a #

Eq a => Eq (Meet a) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(==) :: Meet a -> Meet a -> Bool #

(/=) :: Meet a -> Meet a -> Bool #

Ord a => Ord (Meet a) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

compare :: Meet a -> Meet a -> Ordering #

(<) :: Meet a -> Meet a -> Bool #

(<=) :: Meet a -> Meet a -> Bool #

(>) :: Meet a -> Meet a -> Bool #

(>=) :: Meet a -> Meet a -> Bool #

max :: Meet a -> Meet a -> Meet a #

min :: Meet a -> Meet a -> Meet a #

Show a => Show (Meet a) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

showsPrec :: Int -> Meet a -> ShowS #

show :: Meet a -> String #

showList :: [Meet a] -> ShowS #

Generic (Meet a) Source # 
Instance details

Defined in Data.Semigroup.Meet

Associated Types

type Rep (Meet a) :: Type -> Type #

Methods

from :: Meet a -> Rep (Meet a) x #

to :: Rep (Meet a) x -> Meet a #

Semigroup (Meet Bool) Source # 
Instance details

Defined in Data.Semigroup.Meet

(Meet - Semigroup) b => Semigroup (Meet (a -> b)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet (a -> b) -> Meet (a -> b) -> Meet (a -> b) #

sconcat :: NonEmpty (Meet (a -> b)) -> Meet (a -> b) #

stimes :: Integral b0 => b0 -> Meet (a -> b) -> Meet (a -> b) #

Semigroup (Meet Int) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet Int -> Meet Int -> Meet Int #

sconcat :: NonEmpty (Meet Int) -> Meet Int #

stimes :: Integral b => b -> Meet Int -> Meet Int #

Semigroup (Meet Int8) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Int16) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Int32) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Int64) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Integer) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Natural) Source # 
Instance details

Defined in Data.Semigroup.Meet

(Meet - Semigroup) a => Semigroup (Meet (Maybe a)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet (Maybe a) -> Meet (Maybe a) -> Meet (Maybe a) #

sconcat :: NonEmpty (Meet (Maybe a)) -> Meet (Maybe a) #

stimes :: Integral b => b -> Meet (Maybe a) -> Meet (Maybe a) #

Semigroup (Meet (Ratio Natural)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Rational) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Word) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Word8) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Word16) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Word32) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Word64) Source # 
Instance details

Defined in Data.Semigroup.Meet

((Meet - Semigroup) a, (Meet - Semigroup) b) => Semigroup (Meet (Either a b)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet (Either a b) -> Meet (Either a b) -> Meet (Either a b) #

sconcat :: NonEmpty (Meet (Either a b)) -> Meet (Either a b) #

stimes :: Integral b0 => b0 -> Meet (Either a b) -> Meet (Either a b) #

Semigroup (Meet ()) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet () -> Meet () -> Meet () #

sconcat :: NonEmpty (Meet ()) -> Meet () #

stimes :: Integral b => b -> Meet () -> Meet () #

((Meet - Semigroup) a, (Meet - Semigroup) b) => Semigroup (Meet (a, b)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet (a, b) -> Meet (a, b) -> Meet (a, b) #

sconcat :: NonEmpty (Meet (a, b)) -> Meet (a, b) #

stimes :: Integral b0 => b0 -> Meet (a, b) -> Meet (a, b) #

Semigroup (Meet Uni) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet Uni -> Meet Uni -> Meet Uni #

sconcat :: NonEmpty (Meet Uni) -> Meet Uni #

stimes :: Integral b => b -> Meet Uni -> Meet Uni #

Semigroup (Meet Deci) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Centi) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Milli) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Micro) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Nano) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Meet Pico) Source # 
Instance details

Defined in Data.Semigroup.Meet

Semigroup (Min a) => Semigroup (Meet (Min a)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet (Min a) -> Meet (Min a) -> Meet (Min a) #

sconcat :: NonEmpty (Meet (Min a)) -> Meet (Min a) #

stimes :: Integral b => b -> Meet (Min a) -> Meet (Min a) #

(Meet - Semigroup) a => Semigroup (Meet (Max a)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet (Max a) -> Meet (Max a) -> Meet (Max a) #

sconcat :: NonEmpty (Meet (Max a)) -> Meet (Max a) #

stimes :: Integral b => b -> Meet (Max a) -> Meet (Max a) #

(Join - Semigroup) a => Semigroup (Meet (Down a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

(<>) :: Meet (Down a) -> Meet (Down a) -> Meet (Down a) #

sconcat :: NonEmpty (Meet (Down a)) -> Meet (Down a) #

stimes :: Integral b => b -> Meet (Down a) -> Meet (Down a) #

(Meet - Semigroup) a => Semigroup (Meet (IntMap a)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet (IntMap a) -> Meet (IntMap a) -> Meet (IntMap a) #

sconcat :: NonEmpty (Meet (IntMap a)) -> Meet (IntMap a) #

stimes :: Integral b => b -> Meet (IntMap a) -> Meet (IntMap a) #

Semigroup (Meet IntSet) Source # 
Instance details

Defined in Data.Semigroup.Meet

(Ord k, (Meet - Semigroup) a) => Semigroup (Meet (Map k a)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet (Map k a) -> Meet (Map k a) -> Meet (Map k a) #

sconcat :: NonEmpty (Meet (Map k a)) -> Meet (Map k a) #

stimes :: Integral b => b -> Meet (Map k a) -> Meet (Map k a) #

Ord a => Semigroup (Meet (Set a)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

(<>) :: Meet (Set a) -> Meet (Set a) -> Meet (Set a) #

sconcat :: NonEmpty (Meet (Set a)) -> Meet (Set a) #

stimes :: Integral b => b -> Meet (Set a) -> Meet (Set a) #

Semigroup (Meet Ulp32) Source # 
Instance details

Defined in Data.Float

Ord a => Semigroup (Meet (MaxMin a)) Source # 
Instance details

Defined in Data.Semilattice.MaxMin

Methods

(<>) :: Meet (MaxMin a) -> Meet (MaxMin a) -> Meet (MaxMin a) #

sconcat :: NonEmpty (Meet (MaxMin a)) -> Meet (MaxMin a) #

stimes :: Integral b => b -> Meet (MaxMin a) -> Meet (MaxMin a) #

(Minimal a, Semifield a) => Semigroup (Meet (N5 a)) Source # 
Instance details

Defined in Data.Semilattice.N5

Methods

(<>) :: Meet (N5 a) -> Meet (N5 a) -> Meet (N5 a) #

sconcat :: NonEmpty (Meet (N5 a)) -> Meet (N5 a) #

stimes :: Integral b => b -> Meet (N5 a) -> Meet (N5 a) #

(Meet - Semigroup) a => Semigroup (Meet (Top a)) Source # 
Instance details

Defined in Data.Semilattice.Top

Methods

(<>) :: Meet (Top a) -> Meet (Top a) -> Meet (Top a) #

sconcat :: NonEmpty (Meet (Top a)) -> Meet (Top a) #

stimes :: Integral b => b -> Meet (Top a) -> Meet (Top a) #

Monoid (Meet Bool) Source # 
Instance details

Defined in Data.Semigroup.Meet

(Meet - Monoid) b => Monoid (Meet (a -> b)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

mempty :: Meet (a -> b) #

mappend :: Meet (a -> b) -> Meet (a -> b) -> Meet (a -> b) #

mconcat :: [Meet (a -> b)] -> Meet (a -> b) #

Monoid (Meet Int) Source # 
Instance details

Defined in Data.Semigroup.Meet

Monoid (Meet Int8) Source # 
Instance details

Defined in Data.Semigroup.Meet

Monoid (Meet Int16) Source # 
Instance details

Defined in Data.Semigroup.Meet

Monoid (Meet Int32) Source # 
Instance details

Defined in Data.Semigroup.Meet

Monoid (Meet Int64) Source # 
Instance details

Defined in Data.Semigroup.Meet

(Meet - Monoid) a => Monoid (Meet (Maybe a)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

mempty :: Meet (Maybe a) #

mappend :: Meet (Maybe a) -> Meet (Maybe a) -> Meet (Maybe a) #

mconcat :: [Meet (Maybe a)] -> Meet (Maybe a) #

Monoid (Meet Word) Source # 
Instance details

Defined in Data.Semigroup.Meet

Monoid (Meet Word8) Source # 
Instance details

Defined in Data.Semigroup.Meet

Monoid (Meet Word16) Source # 
Instance details

Defined in Data.Semigroup.Meet

Monoid (Meet Word32) Source # 
Instance details

Defined in Data.Semigroup.Meet

Monoid (Meet Word64) Source # 
Instance details

Defined in Data.Semigroup.Meet

Monoid (Meet ()) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

mempty :: Meet () #

mappend :: Meet () -> Meet () -> Meet () #

mconcat :: [Meet ()] -> Meet () #

(Maximal a, Semigroup (Min a)) => Monoid (Meet (Min a)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

mempty :: Meet (Min a) #

mappend :: Meet (Min a) -> Meet (Min a) -> Meet (Min a) #

mconcat :: [Meet (Min a)] -> Meet (Min a) #

(Meet - Monoid) a => Monoid (Meet (Max a)) Source # 
Instance details

Defined in Data.Semigroup.Meet

Methods

mempty :: Meet (Max a) #

mappend :: Meet (Max a) -> Meet (Max a) -> Meet (Max a) #

mconcat :: [Meet (Max a)] -> Meet (Max a) #

(Join - Monoid) a => Monoid (Meet (Down a)) Source # 
Instance details

Defined in Data.Semigroup.Join

Methods

mempty :: Meet (Down a) #

mappend :: Meet (Down a) -> Meet (Down a) -> Meet (Down a) #

mconcat :: [Meet (Down a)] -> Meet (Down a) #

(Ord a, Maximal a) => Monoid (Meet (MaxMin a)) Source # 
Instance details

Defined in Data.Semilattice.MaxMin

Methods

mempty :: Meet (MaxMin a) #

mappend :: Meet (MaxMin a) -> Meet (MaxMin a) -> Meet (MaxMin a) #

mconcat :: [Meet (MaxMin a)] -> Meet (MaxMin a) #

(Minimal a, Semifield a) => Monoid (Meet (N5 a)) Source # 
Instance details

Defined in Data.Semilattice.N5

Methods

mempty :: Meet (N5 a) #

mappend :: Meet (N5 a) -> Meet (N5 a) -> Meet (N5 a) #

mconcat :: [Meet (N5 a)] -> Meet (N5 a) #

(Meet - Semigroup) a => Monoid (Meet (Top a)) Source # 
Instance details

Defined in Data.Semilattice.Top

Methods

mempty :: Meet (Top a) #

mappend :: Meet (Top a) -> Meet (Top a) -> Meet (Top a) #

mconcat :: [Meet (Top a)] -> Meet (Top a) #

type Rep (Meet a) Source # 
Instance details

Defined in Data.Semigroup.Meet

type Rep (Meet a) = D1 (MetaData "Meet" "Data.Semigroup.Meet" "connections-0.0.3-DlJXNVSUPF02JVkbDQVocy" True) (C1 (MetaCons "Meet" PrefixI True) (S1 (MetaSel (Just "unMeet") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))

top :: (Meet - Monoid) a => a Source #

(∧) :: (Meet - Semigroup) a => a -> a -> a infixr 6 Source #

Meet operation on a semilattice.

>>> (> (0::Int)) ∧ ((< 10) ∨ (== 15)) $ 15
True

meet :: (Meet - Monoid) a => Lattice a => Foldable f => f a -> a Source #

meetWith :: (Meet - Monoid) a => Foldable t => (b -> a) -> t b -> a Source #

Fold over a collection using the multiplicative operation of an arbitrary semiring.

meet f = foldr' ((*) . f) top
>>> meetWith Just [1..5 :: Int]
Just 1
>>> meetWith N5 [1,5,0/0]
N5 {fromN5 = -Infinity}

meet1 :: Lattice a => Foldable1 f => f a -> a Source #

The meet of a list of meet-semilattice elements (of length at least top)

meetWith1 :: Foldable1 t => Lattice a => (b -> a) -> t b -> a Source #

Fold over a non-empty collection using the multiplicative operation of a semiring.

As the collection is non-empty this does not require a distinct multiplicative unit:

>>> meetWith1 Just $ 1 :| [2..5 :: Int]
Just 120
>>> meetWith1 First $ 1 :| [2..(5 :: Int)]
First {getFirst = 15}
>>> meetWith1 First $ Nothing :| [Just (5 :: Int), Just 6,  Nothing]
First {getFirst = Just 11}

Lattices

class LatticeLaw a => Lattice a Source #

Lattices.

A lattice is a partially ordered set in which every two elements have a unique join (least upper bound or supremum) and a unique meet (greatest lower bound or infimum).

Neutrality

x  minimal = x
x  maximal = x

Associativity

x  (y  z) = (x  y)  z
x  (y  z) = (x  y)  z

Commutativity

x  y = y  x
x  y = y  x

Idempotency

x  x = x
x  x = x

Absorption

(x  y)  y = y
(x  y)  y = y

See http://en.wikipedia.org/wiki/Lattice_(order) and http://en.wikipedia.org/wiki/Absorption_law.

Note that distributivity is _not_ a requirement for a lattice, however distributive lattices are idempotent, commutative dioids.

Instances
Lattice Bool Source # 
Instance details

Defined in Data.Semilattice

Lattice Int Source # 
Instance details

Defined in Data.Semilattice

Lattice Int8 Source # 
Instance details

Defined in Data.Semilattice

Lattice Int16 Source # 
Instance details

Defined in Data.Semilattice

Lattice Int32 Source # 
Instance details

Defined in Data.Semilattice

Lattice Int64 Source # 
Instance details

Defined in Data.Semilattice

Lattice Integer Source # 
Instance details

Defined in Data.Semilattice

Lattice Natural Source # 
Instance details

Defined in Data.Semilattice

Lattice Word Source # 
Instance details

Defined in Data.Semilattice

Lattice Word8 Source # 
Instance details

Defined in Data.Semilattice

Lattice Word16 Source # 
Instance details

Defined in Data.Semilattice

Lattice Word32 Source # 
Instance details

Defined in Data.Semilattice

Lattice Word64 Source # 
Instance details

Defined in Data.Semilattice

Lattice () Source # 
Instance details

Defined in Data.Semilattice

Lattice Uni Source # 
Instance details

Defined in Data.Semilattice

Lattice Deci Source # 
Instance details

Defined in Data.Semilattice

Lattice Centi Source # 
Instance details

Defined in Data.Semilattice

Lattice Milli Source # 
Instance details

Defined in Data.Semilattice

Lattice Micro Source # 
Instance details

Defined in Data.Semilattice

Lattice Nano Source # 
Instance details

Defined in Data.Semilattice

Lattice Pico Source # 
Instance details

Defined in Data.Semilattice

Lattice IntSet Source # 
Instance details

Defined in Data.Semilattice

Lattice a => Lattice (Maybe a) Source # 
Instance details

Defined in Data.Semilattice

Lattice a => Lattice (Down a) Source # 
Instance details

Defined in Data.Semilattice

Lattice a => Lattice (IntMap a) Source # 
Instance details

Defined in Data.Semilattice

Ord a => Lattice (Set a) Source # 
Instance details

Defined in Data.Semilattice

(Ord a, Bound a) => Lattice (MaxMin a) Source # 
Instance details

Defined in Data.Semilattice.MaxMin

(Minimal a, Semifield a) => Lattice (N5 a) Source # 
Instance details

Defined in Data.Semilattice.N5

Lattice a => Lattice (Top a) Source # 
Instance details

Defined in Data.Semilattice.Top

(Lattice a, Lattice b) => Lattice (Either a b) Source # 
Instance details

Defined in Data.Semilattice

(Ord k, Lattice a) => Lattice (Map k a) Source # 
Instance details

Defined in Data.Semilattice

glb :: Lattice a => a -> a -> a -> a Source #

Birkhoff's self-dual ternary median operation.

If the lattice is distributive then glb has the following properties.

glb x y y = y
glb x y z = glb z x y
glb x y z = glb x z y
glb (glb x w y) w z = glb x w (glb y w z)
>>> glb 1 2 3 :: Int
2
>>> glb (fromList [1..3]) (fromList [3..5]) (fromList [5..7]) :: Set Int
fromList [3,5]

See Property.

glbWith :: Lattice r => (a -> r) -> a -> a -> a -> r Source #

>>> glbWith N5 1 9 7
N5 {fromN5 = 7.0}
>>> glbWith N5 1 9 (0/0)
N5 {fromN5 = 9.0}

lub :: Lattice a => a -> a -> a -> a Source #

The order dual of glb.

lubWith :: Lattice r => (a -> r) -> a -> a -> a -> r Source #

>>> lubWith N5 1 9 7
N5 {fromN5 = 7.0}
>>> lubWith N5 1 9 (0/0)
N5 {fromN5 = 1.0}

eval :: BoundedLattice a => Functor f => Foldable f => Foldable g => f (g a) -> a Source #

Evaluate a lattice expression.

 (a11 ∧ .. ∧ a1m) ∨ (a21 ∧ .. ∧ a2n) ∨ ...
>>> eval [[1, 2], [3, 4, 5], [6, 7 :: Int]] -- 1 * 2 + 3 * 4
14
>>> eval $ sequence [[1, 2], [3, 4 :: Int]] -- 1 + 2 * 3 + 4
21

evalWith :: BoundedLattice r => Functor f => Functor g => Foldable f => Foldable g => (a -> r) -> f (g a) -> r Source #

eval1 :: Lattice a => Functor f => Foldable1 f => Foldable1 g => f (g a) -> a Source #

evalWith1 :: Lattice r => Functor f => Functor g => Foldable1 f => Foldable1 g => (a -> r) -> f (g a) -> r Source #

cross :: Foldable f => Applicative f => LowerBoundedLattice a => f a -> f a -> a Source #

Cross-multiply two collections.

>>> cross [1,3,5 :: Int] [2,4]
4
>>> cross [1,2,3 :: Int] []
-9223372036854775808

cross1 :: Foldable1 f => Apply f => Lattice a => f a -> f a -> a Source #

Cross-multiply two non-empty collections.