| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
NumHask.Algebra.Multiplicative
Description
A magma heirarchy for multiplication. The basic magma structure is repeated and prefixed with 'Multiplicative-'.
Synopsis
- class MultiplicativeMagma a where
- class MultiplicativeMagma a => MultiplicativeUnital a where
- class MultiplicativeMagma a => MultiplicativeAssociative a
- class MultiplicativeMagma a => MultiplicativeCommutative a
- class MultiplicativeMagma a => MultiplicativeInvertible a where
- product :: (Multiplicative a, Foldable f) => f a -> a
- class (MultiplicativeCommutative a, MultiplicativeUnital a, MultiplicativeAssociative a) => Multiplicative a where
- class (MultiplicativeUnital a, MultiplicativeAssociative a, MultiplicativeInvertible a) => MultiplicativeRightCancellative a where
- class (MultiplicativeUnital a, MultiplicativeAssociative a, MultiplicativeInvertible a) => MultiplicativeLeftCancellative a where
- class (Multiplicative a, MultiplicativeInvertible a) => MultiplicativeGroup a where
- class MultiplicativeMagma a => MultiplicativeIdempotent a
Documentation
class MultiplicativeMagma a where #
times is used as the operator for the multiplicative magam to distinguish from * which, by convention, implies commutativity
∀ a,b ∈ A: a `times` b ∈ A
law is true by construction in Haskell
Minimal complete definition
Instances
class MultiplicativeMagma a => MultiplicativeUnital a where #
Unital magma for multiplication.
one `times` a == a a `times` one == a
Minimal complete definition
Instances
class MultiplicativeMagma a => MultiplicativeAssociative a #
Associative magma for multiplication.
(a `times` b) `times` c == a `times` (b `times` c)
Instances
class MultiplicativeMagma a => MultiplicativeCommutative a #
Commutative magma for multiplication.
a `times` b == b `times` a
Instances
class MultiplicativeMagma a => MultiplicativeInvertible a where #
Invertible magma for multiplication.
∀ a ∈ A: recip a ∈ A
law is true by construction in Haskell
Minimal complete definition
Instances
| MultiplicativeInvertible Double # | |
Defined in NumHask.Algebra.Multiplicative | |
| MultiplicativeInvertible Float # | |
Defined in NumHask.Algebra.Multiplicative | |
| (AdditiveGroup a, MultiplicativeInvertible a) => MultiplicativeInvertible (Complex a) # | |
Defined in NumHask.Algebra.Multiplicative | |
| (Ord a, Signed a, Integral a, AdditiveInvertible a) => MultiplicativeInvertible (Ratio a) # | |
Defined in NumHask.Algebra.Rational | |
| (AdditiveGroup a, MultiplicativeInvertible a) => MultiplicativeInvertible (Complex a) # | |
Defined in NumHask.Data.Complex | |
| MultiplicativeInvertible a => MultiplicativeInvertible (Product a) # | |
Defined in NumHask.Data | |
| (AdditiveInvertible a, LowerBoundedField a, Eq a) => MultiplicativeInvertible (LogField a) # | |
Defined in NumHask.Data.LogField | |
product :: (Multiplicative a, Foldable f) => f a -> a #
product definition avoiding a clash with the Product monoid in base fixme: fit in with Product in base
class (MultiplicativeCommutative a, MultiplicativeUnital a, MultiplicativeAssociative a) => Multiplicative a where #
Multiplicative is commutative, associative and unital under multiplication
one * a == a a * one == a (a * b) * c == a * (b * c) a * b == b * a
Instances
| Multiplicative Bool # | |
| Multiplicative Double # | |
| Multiplicative Float # | |
| Multiplicative Int # | |
| Multiplicative Int8 # | |
| Multiplicative Int16 # | |
| Multiplicative Int32 # | |
| Multiplicative Int64 # | |
| Multiplicative Integer # | |
| Multiplicative Natural # | |
| Multiplicative Word # | |
| Multiplicative Word8 # | |
| Multiplicative Word16 # | |
| Multiplicative Word32 # | |
| Multiplicative Word64 # | |
| (AdditiveGroup a, Multiplicative a) => Multiplicative (Complex a) # | |
| (Signed a, AdditiveInvertible a, AdditiveUnital a, Integral a, Ord a, Multiplicative a) => Multiplicative (Ratio a) # | |
| (MultiplicativeUnital a, MultiplicativeAssociative a, AdditiveGroup a) => Multiplicative (Complex a) # | |
| MultiplicativeUnital a => Multiplicative (Product a) # | |
| (AdditiveUnital a, AdditiveAssociative a, AdditiveCommutative a, Additive a, LowerBoundedField a, Eq a) => Multiplicative (LogField a) # | |
class (MultiplicativeUnital a, MultiplicativeAssociative a, MultiplicativeInvertible a) => MultiplicativeRightCancellative a where #
Non-commutative right divide
a `times` recip a = one
Instances
| (AdditiveUnital a, AdditiveAssociative a, AdditiveInvertible a, AdditiveRightCancellative a, LowerBoundedField a, Eq a) => MultiplicativeRightCancellative (LogField a) # | |
class (MultiplicativeUnital a, MultiplicativeAssociative a, MultiplicativeInvertible a) => MultiplicativeLeftCancellative a where #
Non-commutative left divide
recip a `times` a = one
Instances
| (AdditiveUnital a, AdditiveAssociative a, AdditiveInvertible a, AdditiveLeftCancellative a, LowerBoundedField a, Eq a) => MultiplicativeLeftCancellative (LogField a) # | |
class (Multiplicative a, MultiplicativeInvertible a) => MultiplicativeGroup a where #
Divide (/) is reserved for where both the left and right cancellative laws hold. This then implies that the MultiplicativeGroup is also Abelian.
a / a = one recip a = one / a recip a * a = one a * recip a = one
Instances
| MultiplicativeGroup Double # | |
| MultiplicativeGroup Float # | |
| (AdditiveGroup a, MultiplicativeGroup a) => MultiplicativeGroup (Complex a) # | |
| (Signed a, AdditiveInvertible a, AdditiveUnital a, Integral a, Ord a, Multiplicative a) => MultiplicativeGroup (Ratio a) # | |
| (MultiplicativeUnital a, MultiplicativeAssociative a, MultiplicativeInvertible a, AdditiveGroup a) => MultiplicativeGroup (Complex a) # | |
| (MultiplicativeUnital a, MultiplicativeInvertible a) => MultiplicativeGroup (Product a) # | |
| (Multiplicative (LogField a), AdditiveInvertible a, AdditiveGroup a, LowerBoundedField a, Eq a) => MultiplicativeGroup (LogField a) # | |
class MultiplicativeMagma a => MultiplicativeIdempotent a #
Idempotent magma for multiplication.
a `times` a == a
Instances
| MultiplicativeIdempotent Bool # | |
Defined in NumHask.Algebra.Multiplicative | |