Safe Haskell | None |
---|---|

Language | Haskell2010 |

## Synopsis

- class AdditiveSemigroup a where
- (+) :: a -> a -> a

- class AdditiveSemigroup a => AdditiveMonoid a where
- zero :: a

- class AdditiveMonoid a => AdditiveGroup a where
- (-) :: a -> a -> a

- class MultiplicativeSemigroup a where
- (*) :: a -> a -> a

- class MultiplicativeSemigroup a => MultiplicativeMonoid a where
- one :: a

- type Semiring a = (AdditiveMonoid a, MultiplicativeMonoid a)
- type Ring a = (AdditiveGroup a, MultiplicativeMonoid a)
- class (Ring s, AdditiveGroup v) => Module s v | v -> s where
- scale :: s -> v -> v

- newtype Additive a = Additive a
- newtype Multiplicative a = Multiplicative a
- negate :: AdditiveGroup a => a -> a
- divMod :: Integer -> Integer -> (Integer, Integer)
- quotRem :: Integer -> Integer -> (Integer, Integer)
- abs :: (Ord n, AdditiveGroup n) => n -> n

# Type classes

class AdditiveSemigroup a where Source #

A `Semigroup`

that it is sensible to describe using addition.

#### Instances

class AdditiveSemigroup a => AdditiveMonoid a where Source #

A `Monoid`

that it is sensible to describe using addition and zero.

#### Instances

AdditiveMonoid Bool Source # | |

Defined in PlutusTx.Numeric | |

AdditiveMonoid Integer Source # | |

Defined in PlutusTx.Numeric | |

AdditiveMonoid Rational Source # | |

Defined in PlutusTx.Ratio | |

Monoid a => AdditiveMonoid (Additive a) Source # | |

Defined in PlutusTx.Numeric |

class AdditiveMonoid a => AdditiveGroup a where Source #

A `Group`

that it is sensible to describe using addition, zero, and subtraction.

#### Instances

class MultiplicativeSemigroup a where Source #

A `Semigroup`

that it is sensible to describe using multiplication.

#### Instances

MultiplicativeSemigroup Bool Source # | |

MultiplicativeSemigroup Integer Source # | |

MultiplicativeSemigroup Rational Source # | |

Semigroup a => MultiplicativeSemigroup (Multiplicative a) Source # | |

Defined in PlutusTx.Numeric (*) :: Multiplicative a -> Multiplicative a -> Multiplicative a Source # |

class MultiplicativeSemigroup a => MultiplicativeMonoid a where Source #

A `Semigroup`

that it is sensible to describe using multiplication and one.

#### Instances

MultiplicativeMonoid Bool Source # | |

Defined in PlutusTx.Numeric | |

MultiplicativeMonoid Integer Source # | |

Defined in PlutusTx.Numeric | |

MultiplicativeMonoid Rational Source # | |

Defined in PlutusTx.Ratio | |

Monoid a => MultiplicativeMonoid (Multiplicative a) Source # | |

Defined in PlutusTx.Numeric one :: Multiplicative a Source # |

type Semiring a = (AdditiveMonoid a, MultiplicativeMonoid a) Source #

A semiring.

type Ring a = (AdditiveGroup a, MultiplicativeMonoid a) Source #

A ring.

class (Ring s, AdditiveGroup v) => Module s v | v -> s where Source #

A module, with a type of scalars which can be used to scale the values.

# Helper newtypes

A newtype wrapper to derive `Additive`

classes via.

Additive a |

#### Instances

Group a => AdditiveGroup (Additive a) Source # | |

Monoid a => AdditiveMonoid (Additive a) Source # | |

Defined in PlutusTx.Numeric | |

Semigroup a => AdditiveSemigroup (Additive a) Source # | |

newtype Multiplicative a Source #

A newtype wrapper to derive `Multiplicative`

classes via.

#### Instances

Monoid a => MultiplicativeMonoid (Multiplicative a) Source # | |

Defined in PlutusTx.Numeric one :: Multiplicative a Source # | |

Semigroup a => MultiplicativeSemigroup (Multiplicative a) Source # | |

Defined in PlutusTx.Numeric (*) :: Multiplicative a -> Multiplicative a -> Multiplicative a Source # |

# Helper functions

negate :: AdditiveGroup a => a -> a Source #

abs :: (Ord n, AdditiveGroup n) => n -> n Source #

Absolute value for any `AdditiveGroup`

.

# Orphan instances

AdditiveSemigroup a => Semigroup (Sum a) Source # | |

MultiplicativeSemigroup a => Semigroup (Product a) Source # | |

AdditiveMonoid a => Monoid (Sum a) Source # | |

MultiplicativeMonoid a => Monoid (Product a) Source # | |