TypeClasses.jl
Documentation for TypeClasses.
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.pure & TypeClasses.ap (automatically defined when map and flatmap are defined) | 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, the orelse semantic does not merge two values, but just takes one of the two. |
| FlipTypes | TypeClasses.flip_types | Enables dealing with nested types. Transforms an A{B{C}} into an B{A{C}}. |
For convenience this packages further provides a couple of standard DataTypes and implements the interfaces for them.
Manual Outline
Library Index
TypeClasses.DataTypes.States.getstateTypeClasses.DataTypes.CallableTypeClasses.DataTypes.Iterables.IterableTypeClasses.DataTypes.States.StateTypeClasses.DataTypes.Writers.WriterTypeClasses.:↠TypeClasses.:⊕TypeClasses.:⊘TypeClasses.DataTypes.States.putstateTypeClasses.DataTypes.Writers.getaccumulatorTypeClasses.apTypeClasses.combineTypeClasses.default_flip_types_having_pure_combine_apEltypeTypeClasses.flatmapTypeClasses.flattenTypeClasses.flip_typesTypeClasses.foldl_monoidTypeClasses.foldr_monoidTypeClasses.mapnTypeClasses.neutralTypeClasses.orelseTypeClasses.pureTypeClasses.reduce_monoidTypeClasses.tupledTypeClasses.@mapnTypeClasses.@syntax_flatmapTypeClasses.@syntax_foreachTypeClasses.@syntax_map