1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//!
//! Prelude: Core Functional Traits
//!
//! This module re-exports Rustica's core functional programming traits, making it easy to bring
//! all the key abstractions into scope with a single import. These traits define the essential
//! type classes and algebraic structures for functional programming in Rust.
//!
//! ## Included Traits
//!
//! - **Functor**: Mapping over values in a context
//! - **Applicative**: Function application in a context
//! - **Monad**: Chaining computations in a context
//! - **Monoid/Semigroup**: Algebraic structures for combination and identity
//! - **Foldable/Traversable**: Folding and traversing data structures
//! - **Alternative**: Choice and failure in computations
//! - **Arrow/Category**: Abstract computation and morphisms
//! - **etc.**: Other Type Classes
//!
//! ## Usage Example
//!
//! ```rust
//! use rustica::prelude::traits::*;
//! use rustica::datatypes::maybe::Maybe;
//!
//! // Functor: fmap
//! let x = Maybe::Just(10);
//! let y = x.fmap(|n| n * 2);
//! assert_eq!(y, Maybe::Just(20));
//!
//! // Monad: bind
//! let m = Maybe::Just(5);
//! let bound = m.bind(|n| Maybe::Just(n + 1));
//! assert_eq!(bound, Maybe::Just(6));
//!
//! // Monoid: combine
//! use rustica::prelude::wrapper::Sum;
//! let a = Sum(3);
//! let b = Sum(4);
//! assert_eq!(a.combine(&b), Sum(7));
//! ```
//!
//! See each trait's documentation for more details and advanced usage.
pub use crateAlternative;
pub use crateApplicative;
pub use crateArrow;
pub use crateBifunctor;
pub use crateCategory;
pub use crate;
pub use crateFoldable;
pub use crateFunctor;
pub use crateHKT;
pub use crateIso;
pub use crateMonad;
pub use crateMonadError;
pub use crateMonadPlus;
pub use crateMonoid;
pub use cratePure;
pub use crateSemigroup;
pub use crateTraversable;