TypeClasses defines general programmatic abstractions taken from Scala cats and Haskell TypeClasses.
The following interfaces are defined:
TypeClass | Methods | Description |
---|---|---|
Functor | Base.map |
The basic definition of a container or computational context. |
Applicative | Functor &TypeClasses.ap |
Computational context with support for parallel execution. |
Monad | Applicative &TypeClasses.flatmap |
Computational context with support for sequential, nested execution. |
Semigroup | TypeClasses.combine , alias ⊕ |
The notion of something which can be combined with other things of its kind. |
Monoid | Semigroup &TypeClasses.neutral |
A semigroup with a neutral element is called a Monoid, an often used category. |
Alternative | TypeClasses.neutral & TypeClasses.orelse , alias ⊘ |
Slightly different than Monoid, theorelse semantic does not merge two values, but just takes one of the two. |