← Back

Source

Semiring

interface Semiring<A> {
  readonly add: (x: A, y: A) => A
  readonly zero: A
  readonly mul: (x: A, y: A) => A
  readonly one: A
}

Added in v1.0.0 (type class)

The Semiring class is for types that support an addition and multiplication operation.

Instances must satisfy the following laws:

Note: The number type is not fully law abiding members of this class hierarchy due to the potential for arithmetic overflows, and the presence of NaN and Infinity values. The behaviour is unspecified in these cases.

getFunctionSemiring

<A, B>(S: Semiring<B>): Semiring<(a: A) => B>

Added in v1.0.0 (function)