Copyright | Copyright © 2018 Kadena LLC. |
---|---|
License | MIT |
Maintainer | Lars Kuhtz <[email protected]> |
Stability | experimental |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Numeric.Additive
Description
Haskell's Num
class doesn't support fine grained control
over what arithmetic operations are defined for a type.
Sometimes only some operations have a well defined semantics
and Num
instances are notorious for including undefined/error
values or unlawful workarounds.
Synopsis
- class AdditiveSemigroup g where
- plus :: g -> g -> g
- class AdditiveSemigroup g => AdditiveAbelianSemigroup g
- (^+^) :: AdditiveAbelianSemigroup g => g -> g -> g
- class AdditiveSemigroup g => AdditiveMonoid g where
- zero :: g
- type AdditiveAbelianMonoid g = (AdditiveMonoid g, AdditiveAbelianSemigroup g)
- class AdditiveMonoid g => AdditiveGroup g where
- type AdditiveAbelianGroup g = (AdditiveGroup g, AdditiveAbelianMonoid g)
- (^-^) :: AdditiveAbelianGroup g => g -> g -> g
Additive Semigroup
class AdditiveSemigroup g where Source #
Additive Semigroup
(a `plus` b) `plus` c == a `plus` (b `plus` c)
Instances
class AdditiveSemigroup g => AdditiveAbelianSemigroup g Source #
Additive Abelian Semigroup
a `plus` b == b `plus` a
Instances
(^+^) :: AdditiveAbelianSemigroup g => g -> g -> g infixl 6 Source #
Additive Monoid
class AdditiveSemigroup g => AdditiveMonoid g where Source #
Additive Monoid
a `plus` zero == a
zero `plus` a == a
Instances
AdditiveMonoid Int16 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Int32 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Int64 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Int8 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Rational Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Word16 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Word32 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Word64 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Word8 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Word128 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Word256 Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Integer Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Natural Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Int Source # | |
Defined in Numeric.Additive | |
AdditiveMonoid Word Source # | |
Defined in Numeric.Additive |
type AdditiveAbelianMonoid g = (AdditiveMonoid g, AdditiveAbelianSemigroup g) Source #
Additive Group
class AdditiveMonoid g => AdditiveGroup g where Source #
Additive Group
a `plus` inverse a == zero
inverse a `plus` a == zero
Instances
Additive Abelian Group
type AdditiveAbelianGroup g = (AdditiveGroup g, AdditiveAbelianMonoid g) Source #
Additive Abelian Group
(^-^) :: AdditiveAbelianGroup g => g -> g -> g infix 6 Source #