mirror of
https://github.com/IBM/fp-go.git
synced 2025-07-17 01:32:23 +02:00
fix: add missing ChainXXIOK to Reader
Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
@ -18,6 +18,7 @@ package readerio
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
IO "github.com/IBM/fp-go/io"
|
||||||
L "github.com/IBM/fp-go/lazy"
|
L "github.com/IBM/fp-go/lazy"
|
||||||
R "github.com/IBM/fp-go/readerio/generic"
|
R "github.com/IBM/fp-go/readerio/generic"
|
||||||
)
|
)
|
||||||
@ -38,6 +39,22 @@ func Chain[A, B any](f func(A) ReaderIO[B]) func(ReaderIO[A]) ReaderIO[B] {
|
|||||||
return R.Chain[ReaderIO[A]](f)
|
return R.Chain[ReaderIO[A]](f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MonadChainIOK[A, B any](fa ReaderIO[A], f func(A) IO.IO[B]) ReaderIO[B] {
|
||||||
|
return R.MonadChainIOK[ReaderIO[A], ReaderIO[B]](fa, f)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ChainIOK[A, B any](f func(A) IO.IO[B]) func(ReaderIO[A]) ReaderIO[B] {
|
||||||
|
return R.ChainIOK[ReaderIO[A], ReaderIO[B]](f)
|
||||||
|
}
|
||||||
|
|
||||||
|
func MonadChainFirstIOK[A, B any](fa ReaderIO[A], f func(A) IO.IO[B]) ReaderIO[A] {
|
||||||
|
return R.MonadChainFirstIOK[ReaderIO[A], ReaderIO[B]](fa, f)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ChainFirstIOK[A, B any](f func(A) IO.IO[B]) func(ReaderIO[A]) ReaderIO[A] {
|
||||||
|
return R.ChainFirstIOK[ReaderIO[A], ReaderIO[B]](f)
|
||||||
|
}
|
||||||
|
|
||||||
func Of[A any](a A) ReaderIO[A] {
|
func Of[A any](a A) ReaderIO[A] {
|
||||||
return R.Of[ReaderIO[A]](a)
|
return R.Of[ReaderIO[A]](a)
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
F "github.com/IBM/fp-go/function"
|
F "github.com/IBM/fp-go/function"
|
||||||
|
FIO "github.com/IBM/fp-go/internal/fromio"
|
||||||
FR "github.com/IBM/fp-go/internal/fromreader"
|
FR "github.com/IBM/fp-go/internal/fromreader"
|
||||||
"github.com/IBM/fp-go/internal/readert"
|
"github.com/IBM/fp-go/internal/readert"
|
||||||
IO "github.com/IBM/fp-go/io/generic"
|
IO "github.com/IBM/fp-go/io/generic"
|
||||||
@ -86,11 +87,37 @@ func Asks[GA ~func(E) A, GEA ~func(E) GIOA, GIOA ~func() A, E, A any](r GA) GEA
|
|||||||
}
|
}
|
||||||
|
|
||||||
func MonadChainIOK[GEA ~func(E) GIOA, GEB ~func(E) GIOB, GIOA ~func() A, GIOB ~func() B, E, A, B any](ma GEA, f func(A) GIOB) GEB {
|
func MonadChainIOK[GEA ~func(E) GIOA, GEB ~func(E) GIOB, GIOA ~func() A, GIOB ~func() B, E, A, B any](ma GEA, f func(A) GIOB) GEB {
|
||||||
return MonadChain(ma, F.Flow2(f, FromIO[GEB]))
|
return FIO.MonadChainIOK(
|
||||||
|
MonadChain[GEA, GEB],
|
||||||
|
FromIO[GEB],
|
||||||
|
ma, f,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ChainIOK[GEA ~func(E) GIOA, GEB ~func(E) GIOB, GIOA ~func() A, GIOB ~func() B, E, A, B any](f func(A) GIOB) func(GEA) GEB {
|
func ChainIOK[GEA ~func(E) GIOA, GEB ~func(E) GIOB, GIOA ~func() A, GIOB ~func() B, E, A, B any](f func(A) GIOB) func(GEA) GEB {
|
||||||
return F.Bind2nd(MonadChainIOK[GEA, GEB, GIOA, GIOB, E, A, B], f)
|
return FIO.ChainIOK(
|
||||||
|
MonadChain[GEA, GEB],
|
||||||
|
FromIO[GEB],
|
||||||
|
f,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func MonadChainFirstIOK[GEA ~func(E) GIOA, GEB ~func(E) GIOB, GIOA ~func() A, GIOB ~func() B, E, A, B any](ma GEA, f func(A) GIOB) GEA {
|
||||||
|
return FIO.MonadChainFirstIOK(
|
||||||
|
MonadChain[GEA, GEA],
|
||||||
|
MonadMap[GEB, GEA],
|
||||||
|
FromIO[GEB],
|
||||||
|
ma, f,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ChainFirstIOK[GEA ~func(E) GIOA, GEB ~func(E) GIOB, GIOA ~func() A, GIOB ~func() B, E, A, B any](f func(A) GIOB) func(GEA) GEA {
|
||||||
|
return FIO.ChainFirstIOK(
|
||||||
|
MonadChain[GEA, GEA],
|
||||||
|
MonadMap[GEB, GEA],
|
||||||
|
FromIO[GEB],
|
||||||
|
f,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Defer creates an IO by creating a brand new IO via a generator function, each time
|
// Defer creates an IO by creating a brand new IO via a generator function, each time
|
||||||
|
Reference in New Issue
Block a user