p

cats

# kernel 

Ordering
1. Alphabetic
Visibility
1. Public
2. All

### Type Members

1. trait Band [A] extends Semigroup[A]

Bands are semigroups whose operation (i.e.

Bands are semigroups whose operation (i.e. combine) is also idempotent.

2. trait BoundedSemilattice [A] extends Semilattice[A] with CommutativeMonoid[A]
3. trait CommutativeGroup [A] extends Group[A] with CommutativeMonoid[A]

An commutative group (also known as an abelian group) is a group whose combine operation is commutative.

4. trait CommutativeMonoid [A] extends Monoid[A] with CommutativeSemigroup[A]

CommutativeMonoid represents a commutative monoid.

CommutativeMonoid represents a commutative monoid.

A monoid is commutative if for all x and y, x |+| y === y |+| x.

5. trait CommutativeSemigroup [A] extends Semigroup[A]

CommutativeSemigroup represents a commutative semigroup.

CommutativeSemigroup represents a commutative semigroup.

A semigroup is commutative if for all x and y, x |+| y === y |+| x.

6. sealed abstract class Comparison extends Product with Serializable

ADT encoding the possible results of a comparison

7. trait Eq [A] extends Serializable

A type class used to determine equality between 2 instances of the same type.

A type class used to determine equality between 2 instances of the same type. Any 2 instances `x` and `y` are equal if `eqv(x, y)` is `true`. Moreover, `eqv` should form an equivalence relation.

8. abstract class EqFunctions [E[T] <: Eq[T]] extends AnyRef
9. trait Group [A] extends Monoid[A]

A group is a monoid where each element has an inverse.

10. abstract class GroupFunctions [G[T] <: Group[T]] extends MonoidFunctions[Group]
11. trait Monoid [A] extends Semigroup[A]

A monoid is a semigroup with an identity.

A monoid is a semigroup with an identity. A monoid is a specialization of a semigroup, so its operation must be associative. Additionally, `combine(x, empty) == combine(empty, x) == x`. For example, if we have `Monoid[String]`, with `combine` as string concatenation, then `empty = ""`.

12. abstract class MonoidFunctions [M[T] <: Monoid[T]] extends SemigroupFunctions[M]
13. trait Order [A] extends PartialOrder[A]

The `Order` type class is used to define a total ordering on some type `A`.

The `Order` type class is used to define a total ordering on some type `A`. An order is defined by a relation <=, which obeys the following laws:

- either x <= y or y <= x (totality) - if x <= y and y <= x, then x == y (antisymmetry) - if x <= y and y <= z, then x <= z (transitivity)

The truth table for compare is defined as follows:

x <= y x >= y Int true true = 0 (corresponds to x == y) true false < 0 (corresponds to x < y) false true > 0 (corresponds to x > y)

By the totality law, x <= y and y <= x cannot be both false.

14. abstract class OrderFunctions [O[T] <: Order[T]] extends PartialOrderFunctions[O]
15. trait PartialOrder [A] extends Eq[A]

The `PartialOrder` type class is used to define a partial ordering on some type `A`.

The `PartialOrder` type class is used to define a partial ordering on some type `A`.

A partial order is defined by a relation <=, which obeys the following laws:

- x <= x (reflexivity) - if x <= y and y <= x, then x = y (anti-symmetry) - if x <= y and y <= z, then x <= z (transitivity)

To compute both <= and >= at the same time, we use a Double number to encode the result of the comparisons x <= y and x >= y. The truth table is defined as follows:

x <= y x >= y Double true true = 0.0 (corresponds to x = y) false false = NaN (x and y cannot be compared) true false = -1.0 (corresponds to x < y) false true = 1.0 (corresponds to x > y)

16. abstract class PartialOrderFunctions [P[T] <: PartialOrder[T]] extends EqFunctions[P]
17. trait Semigroup [A] extends Serializable

A semigroup is any set `A` with an associative operation (`combine`).

18. abstract class SemigroupFunctions [S[T] <: Semigroup[T]] extends AnyRef
19. trait Semilattice [A] extends Band[A] with CommutativeSemigroup[A]

Semilattices are commutative semigroups whose operation (i.e.

Semilattices are commutative semigroups whose operation (i.e. combine) is also idempotent.

20. abstract class SemilatticeFunctions [S[T] <: Semilattice[T]] extends SemigroupFunctions[S]