fp_library/classes.rs
1//! Type classes defining shared behavior across different types.
2//!
3//! This module includes traits for common functional programming abstractions
4//! such as `Functor`, `Monad`, `Applicative`, and others.
5//!
6//! Higher-kinded type classes (those with arities > 0, e.g., [`functor::Functor`],
7//! which has arity 1) are usually implemented by
8//! [`Brand` types][crate::brands], which are higher-kinded (arities > 0)
9//! representation of [types][crate::types], instead of directly by concrete
10//! types (which have arity 0).
11
12pub mod applicative;
13pub mod apply_first;
14pub mod apply_second;
15pub mod category;
16pub mod clonable_fn;
17pub mod defer;
18pub mod foldable;
19pub mod function;
20pub mod functor;
21pub mod lift;
22pub mod monad;
23pub mod monoid;
24pub mod once;
25pub mod pointed;
26pub mod semiapplicative;
27pub mod semigroup;
28pub mod semigroupoid;
29pub mod semimonad;
30pub mod traversable;