Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- type (-) (g :: Type -> Type) (f :: Type -> Constraint) a = f (g a)
- type Semilattice = Semigroup
- type LatticeLaw a = ((Join - Semilattice) a, (Meet - Semilattice) a)
- type BoundedLaw a = ((Join - Monoid) a, (Meet - Monoid) a)
- bottom :: (Join - Monoid) a => a
- (\/) :: (Join - Semilattice) a => a -> a -> a
- join :: Foldable f => (Join - Monoid) a => f a -> a
- joinWith :: Foldable t => (Join - Monoid) a => (b -> a) -> t b -> a
- join1 :: Foldable1 f => (Join - Semilattice) a => f a -> a
- joinWith1 :: Foldable1 t => (Join - Semilattice) a => (b -> a) -> t b -> a
- joinLe :: Eq a => (Join - Semilattice) a => a -> a -> Bool
- joinGe :: Eq a => (Join - Semilattice) a => a -> a -> Bool
- pcompareJoin :: Eq a => (Join - Semilattice) a => a -> a -> Maybe Ordering
- newtype Join a = Join {
- getJoin :: a
- top :: (Meet - Monoid) a => a
- (/\) :: (Meet - Semilattice) a => a -> a -> a
- meet :: Foldable f => (Meet - Monoid) a => f a -> a
- meetWith :: Foldable f => (Meet - Monoid) a => (b -> a) -> f b -> a
- meet1 :: Foldable1 f => (Meet - Semilattice) a => f a -> a
- meetWith1 :: Foldable1 f => (Meet - Semilattice) a => (b -> a) -> f b -> a
- meetLe :: Eq a => (Meet - Semilattice) a => a -> a -> Bool
- meetGe :: Eq a => (Meet - Semilattice) a => a -> a -> Bool
- pcompareMeet :: Eq a => (Meet - Semilattice) a => a -> a -> Maybe Ordering
- newtype Meet a = Meet {
- getMeet :: a
- newtype F1 (f :: Type -> Type) a = F1 (f a)
- newtype F2 (f :: Type -> Type) (g :: Type -> Type) a = F2 (f (g a))
- newtype N5Min a = N5Min a
- newtype N5Max a = N5Max a
Constraint kinds
type Semilattice = Semigroup Source #
type LatticeLaw a = ((Join - Semilattice) a, (Meet - Semilattice) a) Source #
Join semilattices
(\/) :: (Join - Semilattice) 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]
join1 :: Foldable1 f => (Join - Semilattice) a => f a -> a Source #
The join of a list of join-semilattice elements (of length at least top)
joinWith1 :: Foldable1 t => (Join - Semilattice) a => (b -> a) -> t b -> a Source #
Fold over a non-empty collection using the join operation of an arbitrary join semilattice.
pcompareJoin :: Eq a => (Join - Semilattice) a => a -> a -> Maybe Ordering Source #
Partial version of compare
.
Normally when a implements Preorder
we should have:
pcompareJoin
x y = pcompare
x y
A commutative Semilattice
under \/
.
Instances
Meet semilattices
(/\) :: (Meet - Semilattice) a => a -> a -> a infixr 6 Source #
Meet operation on a semilattice.
>>>
(> (0::Int)) /\ ((< 10) ∨ (== 15)) $ 15
True
meet1 :: Foldable1 f => (Meet - Semilattice) a => f a -> a Source #
The meet of a non-empty collection of meet-semilattice elements.
meetWith1 :: Foldable1 f => (Meet - Semilattice) a => (b -> a) -> f 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}
pcompareMeet :: Eq a => (Meet - Semilattice) a => a -> a -> Maybe Ordering Source #
Partial version of compare
.
Normally when a implements Preorder
we should have:
pcompareJoin
x y = pcompare
x y
Instances
DerivingVia
newtype F1 (f :: Type -> Type) a Source #
F1 (f a) |
Instances
Functor f => Functor (F1 f) Source # | |
Eq (f a) => Eq (F1 f a) Source # | |
Ord (f a) => Ord (F1 f a) Source # | |
Show (f a) => Show (F1 f a) Source # | |
(Applicative f, Semigroup a) => Semigroup (F1 f a) Source # | |
(Applicative f, Monoid a) => Monoid (F1 f a) Source # | |
(Applicative f, Quantale a) => Quantale (F1 f a) Source # | |
newtype F2 (f :: Type -> Type) (g :: Type -> Type) a Source #
F2 (f (g a)) |
Instances
(Functor f, Functor g) => Functor (F2 f g) Source # | |
(Applicative f, Applicative g) => Applicative (F2 f g) Source # | |
Eq (f (g a)) => Eq (F2 f g a) Source # | |
Ord (f (g a)) => Ord (F2 f g a) Source # | |
Defined in Data.Semigroup.Join | |
Show (f (g a)) => Show (F2 f g a) Source # | |
(Applicative f, Applicative g, Semigroup a) => Semigroup (F2 f g a) Source # | |
(Applicative f, Applicative g, Monoid a) => Monoid (F2 f g a) Source # | |
(Applicative f, Applicative g, Quantale a) => Quantale (F2 f g a) Source # | |
N5Min a |