mirror of
https://github.com/IBM/fp-go.git
synced 2025-08-26 19:38:58 +02:00
Compare commits
5 Commits
v1.0.42
...
cleue-add-
Author | SHA1 | Date | |
---|---|---|---|
|
1eefc28ba6 | ||
|
af2915d98a | ||
|
e9f9c2777f | ||
|
895862a67e | ||
|
caf0574742 |
@@ -309,10 +309,10 @@ func Push[A any](a A) func([]A) []A {
|
||||
return G.Push[[]A](a)
|
||||
}
|
||||
|
||||
func MonadFlap[A, B any](fab []func(A) B, a A) []B {
|
||||
func MonadFlap[B, A any](fab []func(A) B, a A) []B {
|
||||
return G.MonadFlap[func(A) B, []func(A) B, []B, A, B](fab, a)
|
||||
}
|
||||
|
||||
func Flap[A, B any](a A) func([]func(A) B) []B {
|
||||
func Flap[B, A any](a A) func([]func(A) B) []B {
|
||||
return G.Flap[func(A) B, []func(A) B, []B, A, B](a)
|
||||
}
|
||||
|
@@ -19,7 +19,6 @@ import (
|
||||
"os"
|
||||
|
||||
RIOE "github.com/IBM/fp-go/context/readerioeither"
|
||||
FL "github.com/IBM/fp-go/file"
|
||||
F "github.com/IBM/fp-go/function"
|
||||
IO "github.com/IBM/fp-go/io"
|
||||
IOF "github.com/IBM/fp-go/io/file"
|
||||
@@ -32,7 +31,7 @@ var (
|
||||
// destroy handler
|
||||
onReleaseTempFile = F.Flow4(
|
||||
IOF.Close[*os.File],
|
||||
IO.Map(FL.GetName),
|
||||
IO.Map((*os.File).Name),
|
||||
RIOE.FromIO[string],
|
||||
RIOE.Chain(Remove),
|
||||
)
|
||||
|
@@ -620,3 +620,47 @@ func Flatten[
|
||||
A any](rdr GGRA) GRA {
|
||||
return RIE.Flatten[GRA](rdr)
|
||||
}
|
||||
|
||||
func MonadFromReaderIO[
|
||||
GRIOEA ~func(context.Context) GIOEA,
|
||||
GIOEA ~func() E.Either[error, A],
|
||||
|
||||
GRIOA ~func(context.Context) GIOA,
|
||||
GIOA ~func() A,
|
||||
|
||||
A any](a A, f func(A) GRIOA) GRIOEA {
|
||||
return RIE.MonadFromReaderIO[GRIOEA](a, f)
|
||||
}
|
||||
|
||||
func FromReaderIO[
|
||||
GRIOEA ~func(context.Context) GIOEA,
|
||||
GIOEA ~func() E.Either[error, A],
|
||||
|
||||
GRIOA ~func(context.Context) GIOA,
|
||||
GIOA ~func() A,
|
||||
|
||||
A any](f func(A) GRIOA) func(A) GRIOEA {
|
||||
return RIE.FromReaderIO[GRIOEA](f)
|
||||
}
|
||||
|
||||
func RightReaderIO[
|
||||
GRIOEA ~func(context.Context) GIOEA,
|
||||
GIOEA ~func() E.Either[error, A],
|
||||
|
||||
GRIOA ~func(context.Context) GIOA,
|
||||
GIOA ~func() A,
|
||||
|
||||
A any](ma GRIOA) GRIOEA {
|
||||
return RIE.RightReaderIO[GRIOEA](ma)
|
||||
}
|
||||
|
||||
func LeftReaderIO[
|
||||
GRIOEA ~func(context.Context) GIOEA,
|
||||
GIOEA ~func() E.Either[error, A],
|
||||
|
||||
GRIOE ~func(context.Context) GIOE,
|
||||
GIOE ~func() error,
|
||||
|
||||
A any](ma GRIOE) GRIOEA {
|
||||
return RIE.LeftReaderIO[GRIOEA](ma)
|
||||
}
|
||||
|
@@ -234,3 +234,19 @@ func Flatten[
|
||||
A any](rdr ReaderIOEither[ReaderIOEither[A]]) ReaderIOEither[A] {
|
||||
return G.Flatten[ReaderIOEither[ReaderIOEither[A]]](rdr)
|
||||
}
|
||||
|
||||
func MonadFromReaderIO[A any](a A, f func(A) RIO.ReaderIO[A]) ReaderIOEither[A] {
|
||||
return G.MonadFromReaderIO[ReaderIOEither[A]](a, f)
|
||||
}
|
||||
|
||||
func FromReaderIO[A any](f func(A) RIO.ReaderIO[A]) func(A) ReaderIOEither[A] {
|
||||
return G.FromReaderIO[ReaderIOEither[A]](f)
|
||||
}
|
||||
|
||||
func RightReaderIO[A any](ma RIO.ReaderIO[A]) ReaderIOEither[A] {
|
||||
return G.RightReaderIO[ReaderIOEither[A]](ma)
|
||||
}
|
||||
|
||||
func LeftReaderIO[A any](ma RIO.ReaderIO[error]) ReaderIOEither[A] {
|
||||
return G.LeftReaderIO[ReaderIOEither[A]](ma)
|
||||
}
|
||||
|
@@ -248,12 +248,12 @@ func Swap[E, A any](val Either[E, A]) Either[A, E] {
|
||||
return MonadFold(val, Right[A, E], Left[E, A])
|
||||
}
|
||||
|
||||
func MonadFlap[E, A, B any](fab Either[E, func(A) B], a A) Either[E, B] {
|
||||
func MonadFlap[E, B, A any](fab Either[E, func(A) B], a A) Either[E, B] {
|
||||
return FC.MonadFlap(MonadMap[E, func(A) B, B], fab, a)
|
||||
}
|
||||
|
||||
func Flap[E, A, B any](a A) func(Either[E, func(A) B]) Either[E, B] {
|
||||
return F.Bind2nd(MonadFlap[E, A, B], a)
|
||||
func Flap[E, B, A any](a A) func(Either[E, func(A) B]) Either[E, B] {
|
||||
return F.Bind2nd(MonadFlap[E, B, A], a)
|
||||
}
|
||||
|
||||
func MonadAlt[E, A any](fa Either[E, A], that L.Lazy[Either[E, A]]) Either[E, A] {
|
||||
|
@@ -15,9 +15,11 @@
|
||||
|
||||
package file
|
||||
|
||||
import "os"
|
||||
import "path/filepath"
|
||||
|
||||
// GetName is the getter for the `Name` property of [os.File]
|
||||
func GetName(f *os.File) string {
|
||||
return f.Name()
|
||||
// Join appends a filename to a root path
|
||||
func Join(name string) func(root string) string {
|
||||
return func(root string) string {
|
||||
return filepath.Join(root, name)
|
||||
}
|
||||
}
|
||||
|
@@ -64,10 +64,10 @@ func ChainFirst[A, B any](f func(A) B) func(A) A {
|
||||
return G.ChainFirst(f)
|
||||
}
|
||||
|
||||
func MonadFlap[A, B any](fab func(A) B, a A) B {
|
||||
func MonadFlap[B, A any](fab func(A) B, a A) B {
|
||||
return G.MonadFlap[func(A) B](fab, a)
|
||||
}
|
||||
|
||||
func Flap[A, B any](a A) func(func(A) B) B {
|
||||
func Flap[B, A any](a A) func(func(A) B) B {
|
||||
return G.Flap[func(A) B](a)
|
||||
}
|
||||
|
2
io/io.go
2
io/io.go
@@ -139,7 +139,7 @@ func Defer[A any](gen func() IO[A]) IO[A] {
|
||||
return G.Defer[IO[A]](gen)
|
||||
}
|
||||
|
||||
func MonadFlap[A, B any](fab IO[func(A) B], a A) IO[B] {
|
||||
func MonadFlap[B, A any](fab IO[func(A) B], a A) IO[B] {
|
||||
return G.MonadFlap[func(A) B, IO[func(A) B], IO[B], A, B](fab, a)
|
||||
}
|
||||
|
||||
|
@@ -18,7 +18,6 @@ package file
|
||||
import (
|
||||
"os"
|
||||
|
||||
FL "github.com/IBM/fp-go/file"
|
||||
F "github.com/IBM/fp-go/function"
|
||||
IO "github.com/IBM/fp-go/io"
|
||||
IOF "github.com/IBM/fp-go/io/file"
|
||||
@@ -33,7 +32,7 @@ var (
|
||||
// destroy handler
|
||||
onReleaseTempFile = F.Flow4(
|
||||
IOF.Close[*os.File],
|
||||
IO.Map(FL.GetName),
|
||||
IO.Map((*os.File).Name),
|
||||
IOE.FromIO[error, string],
|
||||
IOE.Chain(Remove),
|
||||
)
|
||||
|
@@ -147,10 +147,10 @@ func Filter[A any](pred func(A) bool) func(Option[A]) Option[A] {
|
||||
return Fold(None[A], F.Ternary(pred, Of[A], F.Ignore1of1[A](None[A])))
|
||||
}
|
||||
|
||||
func MonadFlap[A, B any](fab Option[func(A) B], a A) Option[B] {
|
||||
func MonadFlap[B, A any](fab Option[func(A) B], a A) Option[B] {
|
||||
return FC.MonadFlap(MonadMap[func(A) B, B], fab, a)
|
||||
}
|
||||
|
||||
func Flap[A, B any](a A) func(Option[func(A) B]) Option[B] {
|
||||
return F.Bind2nd(MonadFlap[A, B], a)
|
||||
func Flap[B, A any](a A) func(Option[func(A) B]) Option[B] {
|
||||
return F.Bind2nd(MonadFlap[B, A], a)
|
||||
}
|
||||
|
Reference in New Issue
Block a user