Help us shape the future of Go! Take the 2026 Go Developer Survey

monad

package
v2.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

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

func ToFunctor

func ToFunctor[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) functor.Functor[A, B, HKTA, HKTB]

ToFunctor converts from Monad to functor.Functor

func ToPointed

func ToPointed[A, B, HKTA, HKTB, HKTFAB any](ap Monad[A, B, HKTA, HKTB, HKTFAB]) pointed.Pointed[A, HKTA]

ToPointed converts from Monad to pointed.Pointed

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")

Directories

Path Synopsis
Package testing provides law-based testing utilities for monads.
Package testing provides law-based testing utilities for monads.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL