| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
NumHask.Free.Multiplicative
Description
Free monoid — the initial encoding of Multiplicative.
Synopsis
- data Multiplicative a
- = One
- | Times (Multiplicative a) (Multiplicative a)
- | Embed a
- one :: Multiplicative a
- times :: Multiplicative a -> Multiplicative a -> Multiplicative a
- embed :: a -> Multiplicative a
- lift :: (Eq a, Multiplicative a) => a -> Multiplicative a
- normalize :: (Eq a, Multiplicative a) => Multiplicative a -> Multiplicative a
- eval :: Multiplicative a => Multiplicative a -> a
- foldMultiplicative :: b -> (b -> b -> b) -> (a -> b) -> Multiplicative a -> b
- flatten :: Multiplicative a -> [a]
Documentation
data Multiplicative a Source #
Free monoid over a carrier type.
The initial encoding of Multiplicative.
Terms are built from one, times, and embed.
Constructors
| One | |
| Times (Multiplicative a) (Multiplicative a) | |
| Embed a |
Instances
| Eq a => Eq (Multiplicative a) Source # | |
Defined in NumHask.Free.Multiplicative Methods (==) :: Multiplicative a -> Multiplicative a -> Bool # (/=) :: Multiplicative a -> Multiplicative a -> Bool # | |
| Show a => Show (Multiplicative a) Source # | |
Defined in NumHask.Free.Multiplicative Methods showsPrec :: Int -> Multiplicative a -> ShowS # show :: Multiplicative a -> String # showList :: [Multiplicative a] -> ShowS # | |
one :: Multiplicative a Source #
Multiplicative identity.
times :: Multiplicative a -> Multiplicative a -> Multiplicative a Source #
Multiplication with identity absorption.
times one a = a times a one = a
embed :: a -> Multiplicative a Source #
Embed a carrier value as an atomic generator.
lift :: (Eq a, Multiplicative a) => a -> Multiplicative a Source #
Lift a carrier value, absorbing the multiplicative identity.
>>>lift 1One
normalize :: (Eq a, Multiplicative a) => Multiplicative a -> Multiplicative a Source #
Normalize a term with respect to monoid laws.
>>>normalize (embed 1)One
eval :: Multiplicative a => Multiplicative a -> a Source #
Evaluate a term into any Multiplicative.
This is the unique homomorphism out of the free monoid.
foldMultiplicative :: b -> (b -> b -> b) -> (a -> b) -> Multiplicative a -> b Source #
Universal property: fold with a target monoid.
flatten :: Multiplicative a -> [a] Source #
Flatten a term to a list of embedded generators, discarding identities.