Documentation
¶
Index ¶
- func Ap[GEA ~func(E) HKTA, GEB ~func(E) HKTB, GEFAB ~func(E) HKTFAB, ...](fap apply.ApType[HKTA, HKTB, HKTFAB], fa GEA) func(GEFAB) GEB
- func ApplicativeMonoid[R, A any](_of func(A) func(R) A, ...) M.Monoid[func(R) A]
- func ApplySemigroup[R, A any](_map func(func(R) A, func(A) func(A) A) func(R, func(A) A), ...) S.Semigroup[func(R) A]
- func Chain[GEA ~func(E) HKTA, GEB ~func(E) HKTB, A, E, HKTA, HKTB any](fchain chain.ChainType[A, HKTA, HKTB], f func(A) GEB) func(GEA) GEB
- func FromReader[GA ~func(E) A, GEA ~func(E) HKTA, E, A, HKTA any](fof pointed.OfType[A, HKTA]) func(ma GA) GEA
- func Map[GEA ~func(E) HKTA, GEB ~func(E) HKTB, E, A, B, HKTA, HKTB any](fmap functor.MapType[A, B, HKTA, HKTB], f func(A) B) func(GEA) GEB
- func MonadAp[GEA ~func(E) HKTA, GEB ~func(E) HKTB, GEFAB ~func(E) HKTFAB, ...](fap func(HKTFAB, HKTA) HKTB, fab GEFAB, fa GEA) GEB
- func MonadChain[GEA ~func(E) HKTA, GEB ~func(E) HKTB, A, E, HKTA, HKTB any](fchain func(HKTA, func(A) HKTB) HKTB, ma GEA, f func(A) GEB) GEB
- func MonadFromReader[GA ~func(E) A, GEA ~func(E) HKTA, E, A, HKTA any](fof pointed.OfType[A, HKTA], ma GA) GEA
- func MonadMap[GEA ~func(E) HKTA, GEB ~func(E) HKTB, E, A, B, HKTA, HKTB any](fmap func(HKTA, func(A) B) HKTB, fa GEA, f func(A) B) GEB
- func MonadOf[GEA ~func(E) HKTA, E, A, HKTA any](fof pointed.OfType[A, HKTA], a A) GEA
- func Sequence[HKTR2HKTR1A ~func(R2) HKTR1HKTA, R1, R2, HKTR1HKTA, HKTA any](mchain func(func(func(R1) HKTA) HKTA) func(HKTR1HKTA) HKTA, ma HKTR2HKTR1A) func(R1) func(R2) HKTA
- func SequenceReader[HKTR2HKTR1A ~func(R2) HKTR1HKTA, R1, R2, A, HKTR1HKTA, HKTA any](mmap func(func(func(R1) A) A) func(HKTR1HKTA) HKTA, ma HKTR2HKTR1A) func(R1) func(R2) HKTA
- func Traverse[HKTR2A ~func(R2) HKTA, HKTR1B ~func(R1) HKTB, ...](mmap func(func(A) HKTR1B) func(HKTA) HKTR1HKTB, ...) func(HKTR2A) func(R1) func(R2) HKTB
- func TraverseReader[HKTR2A ~func(R2) HKTA, HKTR1B ~func(R1) B, ...](mmap1 func(func(A) HKTR1B) func(HKTA) HKTR1HKTB, ...) func(HKTR2A) func(R1) func(R2) HKTB
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ApplicativeMonoid ¶ added in v2.1.20
func ApplicativeMonoid[R, A any]( _of func(A) func(R) A, _map func(func(R) A, func(A) func(A) A) func(R, func(A) A), _ap func(func(R, func(A) A), func(R) A) func(R) A, m M.Monoid[A], ) M.Monoid[func(R) A]
ApplicativeMonoid lifts a Monoid[A] into a Monoid[Reader[R, A]]. This allows you to combine Readers that produce monoid values, with an empty/identity Reader.
The _of parameter is the Of operation (pure/return) for the Reader type. The _map and _ap parameters are the Map and Ap operations for the Reader type.
Example:
type Config struct { Prefix string }
// Using the string concatenation monoid
stringMonoid := monoid.MakeMonoid("", func(a, b string) string { return a + b })
readerMonoid := reader.ApplicativeMonoid(
reader.Of[Config, string],
reader.MonadMap[Config, string, func(string) string],
reader.MonadAp[string, Config, string],
stringMonoid,
)
r1 := reader.Asks(func(c Config) string { return c.Prefix })
r2 := reader.Of[Config]("hello")
combined := readerMonoid.Concat(r1, r2)
result := combined(Config{Prefix: ">> "}) // ">> hello"
empty := readerMonoid.Empty()(Config{Prefix: "any"}) // ""
func ApplySemigroup ¶ added in v2.1.20
func ApplySemigroup[R, A any]( _map func(func(R) A, func(A) func(A) A) func(R, func(A) A), _ap func(func(R, func(A) A), func(R) A) func(R) A, s S.Semigroup[A], ) S.Semigroup[func(R) A]
ApplySemigroup lifts a Semigroup[A] into a Semigroup[Reader[R, A]]. This allows you to combine two Readers that produce semigroup values by combining their results using the semigroup's concat operation.
The _map and _ap parameters are the Map and Ap operations for the Reader type, typically obtained from the reader package.
Example:
type Config struct { Multiplier int }
// Using the additive semigroup for integers
intSemigroup := semigroup.MakeSemigroup(func(a, b int) int { return a + b })
readerSemigroup := reader.ApplySemigroup(
reader.MonadMap[Config, int, func(int) int],
reader.MonadAp[int, Config, int],
intSemigroup,
)
r1 := reader.Of[Config](5)
r2 := reader.Of[Config](3)
combined := readerSemigroup.Concat(r1, r2)
result := combined(Config{Multiplier: 1}) // 8
func FromReader ¶
func MonadAp ¶
func MonadAp[GEA ~func(E) HKTA, GEB ~func(E) HKTB, GEFAB ~func(E) HKTFAB, E, A, HKTA, HKTB, HKTFAB any](fap func(HKTFAB, HKTA) HKTB, fab GEFAB, fa GEA) GEB
HKTFAB = HKT[func(A)B]
func MonadChain ¶
func MonadChain[GEA ~func(E) HKTA, GEB ~func(E) HKTB, A, E, HKTA, HKTB any](fchain func(HKTA, func(A) HKTB) HKTB, ma GEA, f func(A) GEB) GEB
func MonadFromReader ¶
func MonadMap ¶
func MonadMap[GEA ~func(E) HKTA, GEB ~func(E) HKTB, E, A, B, HKTA, HKTB any]( fmap func(HKTA, func(A) B) HKTB, fa GEA, f func(A) B, ) GEB
func Sequence ¶
func Sequence[ HKTR2HKTR1A ~func(R2) HKTR1HKTA, R1, R2, HKTR1HKTA, HKTA any]( mchain func(func(func(R1) HKTA) HKTA) func(HKTR1HKTA) HKTA, ma HKTR2HKTR1A, ) func(R1) func(R2) HKTA
func SequenceReader ¶
func SequenceReader[ HKTR2HKTR1A ~func(R2) HKTR1HKTA, R1, R2, A, HKTR1HKTA, HKTA any]( mmap func(func(func(R1) A) A) func(HKTR1HKTA) HKTA, ma HKTR2HKTR1A, ) func(R1) func(R2) HKTA
func Traverse ¶
func Traverse[ HKTR2A ~func(R2) HKTA, HKTR1B ~func(R1) HKTB, R1, R2, A, HKTR1HKTB, HKTA, HKTB any]( mmap func(func(A) HKTR1B) func(HKTA) HKTR1HKTB, mchain func(func(func(R1) HKTB) HKTB) func(HKTR1HKTB) HKTB, f func(A) HKTR1B, ) func(HKTR2A) func(R1) func(R2) HKTB
func TraverseReader ¶
func TraverseReader[ HKTR2A ~func(R2) HKTA, HKTR1B ~func(R1) B, R1, R2, A, B, HKTR1HKTB, HKTA, HKTB any]( mmap1 func(func(A) HKTR1B) func(HKTA) HKTR1HKTB, mmap2 func(func(func(R1) B) B) func(HKTR1HKTB) HKTB, f func(A) HKTR1B, ) func(HKTR2A) func(R1) func(R2) HKTB
Types ¶
This section is empty.