Documentation
¶
Index ¶
- func ToApplicative[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) applicative.Applicative[A, B, HKTA, HKTB, HKTFAB]
- func ToApply[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) apply.Apply[A, B, HKTA, HKTB, HKTFAB]
- func ToChainable[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) chain.Chainable[A, B, HKTA, HKTB, HKTFAB]
- func ToFunctor[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) functor.Functor[A, B, HKTA, HKTB]
- func ToPointed[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) pointed.Pointed[A, HKTA]
- type Monad
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ToApplicative ¶
func ToApplicative[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) applicative.Applicative[A, B, HKTA, HKTB, HKTFAB]
ToApplicative converts from Monad to applicative.Applicative
func ToApply ¶
func ToApply[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) apply.Apply[A, B, HKTA, HKTB, HKTFAB]
ToApply converts from Monad to apply.Apply
func ToChainable ¶
func ToChainable[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) chain.Chainable[A, B, HKTA, HKTB, HKTFAB]
ToChainable converts from Monad to chain.Chainable
Types ¶
type Monad ¶
type Monad[A, B, HKTA, HKTB, HKTFAB any] interface { applicative.Applicative[A, B, HKTA, HKTB, HKTFAB] chain.Chainable[A, B, HKTA, HKTB, HKTFAB] }
Monad represents the full monadic interface, combining Applicative and Chainable.
A Monad provides the complete set of operations for working with computational contexts: - Map (from Functor): transform values within a context - Of (from Pointed): lift pure values into a context - Ap (from Apply): apply wrapped functions to wrapped values - Chain (from Chainable): sequence dependent computations
Monads must satisfy the monad laws:
Left Identity:
Chain(f)(Of(a)) == f(a)
Right Identity:
Chain(Of)(m) == m
Associativity:
Chain(g)(Chain(f)(m)) == Chain(x => Chain(g)(f(x)))(m)
Type Parameters:
- A: The input value type
- B: The output value type
- HKTA: The higher-kinded type containing A
- HKTB: The higher-kinded type containing B
- HKTFAB: The higher-kinded type containing a function from A to B
Example:
// Given a Monad for Option
var m Monad[int, string, Option[int], Option[string], Option[func(int) string]]
// Use Of to create a value
value := m.Of(42) // Some(42)
// Use Chain for dependent operations
chainFn := m.Chain(func(x int) Option[string] {
if x > 0 {
return Some(strconv.Itoa(x))
}
return None[string]()
})
result := chainFn(value) // Some("42")