mo
packagemoduleThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
README¶
mo - Monads
🦄samber/mo
brings monads and popular FP abstractions to Go projects.samber/mo
uses the recent Go 1.18+ Generics.
Inspired by:
- Scala
- Rust
- FP-TS
See also:
- samber/lo: A Lodash-style Go library based on Go 1.18+ Generics
- samber/do: A dependency injection toolkit based on Go 1.18+ Generics
Why this name?
I loveshort name for such utility library. This name is similar to "Monad Go" and no Go package uses this name.
💡 Features
We currently support the following data types:
Option[T]
(Maybe)Result[T]
Either[A, B]
EitherX[T1, ..., TX]
(With X between 3 and 5)Future[T]
IO[T]
IOEither[T]
Task[T]
TaskEither[T]
State[S, A]
🚀 Install
go get github.com/samber/mo@v1
This library is v1 and follows SemVer strictly.
No breaking changes will be made to exported APIs before v2.0.0.
This library has no dependencies except the Go std lib.
💡 Quick start
You can importmo
using:
import ( "github.com/samber/mo")
Then use one of the helpers below:
option1 := mo.Some(42)// Some(42)option1. FlatMap(func (value int) Option[int] { return Some(value*2) }). FlatMap(func (value int) Option[int] { return Some(value%2) }). FlatMap(func (value int) Option[int] { return Some(value+21) }). OrElse(1234)// 21option2 := mo.None[int]()// Noneoption2.OrElse(1234)// 1234option3 := option1.Match( func(i int) (int, bool) { // when value is present return i * 2, true }, func() (int, bool) { // when value is absent return 0, false },)// Some(42)
More examples indocumentation.
Tips for lazy developers
I cannot recommend it, but in case you are too lazy for repeatingmo.
everywhere, you can import the entire library into the namespace.
import ( . "github.com/samber/mo")
I take no responsibility on this junk. 😁 💩
🤠 Documentation and examples
GoDoc: https://godoc.org/github.com/samber/mo
Option[T any]
Option
is a container for an optional value of typeT
. If value exists,Option
is of typeSome
. If the value is absent,Option
is of typeNone
.
Implements:
mo.Foldable[T, U]
Constructors:
mo.Some()
doc -playmo.None()
doc -playmo.TupleToOption()
doc -playmo.EmptyableToOption()
doc -playmo.PointerToOption()
doc -play
Methods:
.IsPresent()
doc -play.IsAbsent()
doc -play.Size()
doc -play.Get()
doc -play.MustGet()
doc -play.OrElse()
doc -play.OrEmpty()
doc -play.ToPointer()
doc -play.ForEach()
doc.Match()
doc -play.Map()
doc -play.MapNone()
doc -play.FlatMap()
doc -play.MarshalJSON()
doc.UnmarshalJSON()
doc.MarshalText()
doc.UnmarshalText()
doc.MarshalBinary()
doc.UnmarshalBinary()
doc.GobEncode()
doc.GobDecode()
doc.Scan()
doc.Value()
doc
Other:
mo.Fold[T, U, R any](f Foldable[T, U], successFunc func(U) R, failureFunc func(T) R) R
doc
Result[T any]
Result
respresent a result of an action having one of the following output: success or failure. An instance ofResult
is an instance of eitherOk
orErr
. It could be compared toEither[error, T]
.
Implements:
mo.Foldable[T, U]
Constructors:
Methods:
.IsOk()
doc -play.IsError()
doc -play.Error()
doc -play.Get()
doc -play.MustGet()
doc -play.OrElse()
doc -play.OrEmpty()
doc -play.ToEither()
doc -play.ForEach()
doc.Match()
doc -play.Map()
doc -play.MapErr()
doc -play.FlatMap()
doc -play
Other:
mo.Fold[T, U, R any](f Foldable[T, U], successFunc func(U) R, failureFunc func(T) R) R
docmo.Do[T any](fn func() T) (result mo.Result[T])
doc
Either[L any, R any]
Either
represents a value of 2 possible types. An instance ofEither
is an instance of eitherA
orB
.
Implements:
mo.Foldable[T, U]
Constructors:
Methods:
.IsLeft()
doc.IsRight()
doc.Left()
doc.Right()
doc.MustLeft()
doc.MustRight()
doc.Unpack()
doc.LeftOrElse()
doc.RightOrElse()
doc.LeftOrEmpty()
doc.RightOrEmpty()
doc.Swap()
doc.ForEach()
doc.Match()
doc.MapLeft()
doc.MapRight()
doc
Other:
mo.Fold[T, U, R any](f Foldable[T, U], successFunc func(U) R, failureFunc func(T) R) R
doc
EitherX[T1, ..., TX] (With X between 3 and 5)
EitherX
respresents a value of X possible types. For example, anEither3
value is eitherT1
,T2
orT3
.
Constructors:
mo.NewEitherXArgY()
doc. Eg:mo.NewEither3Arg1[A, B, C](A)
mo.NewEither3Arg2[A, B, C](B)
mo.NewEither3Arg3[A, B, C](C)
mo.NewEither4Arg1[A, B, C, D](A)
mo.NewEither4Arg2[A, B, C, D](B)
- ...
Methods:
.IsArgX()
doc.ArgX()
doc.MustArgX()
doc.Unpack()
doc.ArgXOrElse()
doc.ArgXOrEmpty()
doc.ForEach()
doc.Match()
doc.MapArgX()
doc
Future[T any]
Future
represents a value which may or may not currently be available, but will be available at some point, or an exception if that value could not be made available.
Constructors:
mo.NewFuture()
doc
Methods:
IO[T any]
IO
represents a non-deterministic synchronous computation that can cause side effects, yields a value of typeR
and never fails.
Constructors:
Methods:
.Run()
doc
IOEither[T any]
IO
represents a non-deterministic synchronous computation that can cause side effects, yields a value of typeR
and can fail.
Constructors:
mo.NewIOEither()
docmo.NewIOEither1()
docmo.NewIOEither2()
docmo.NewIOEither3()
docmo.NewIOEither4()
docmo.NewIOEither5()
doc
Methods:
.Run()
doc
Task[T any]
Task
represents a non-deterministic asynchronous computation that can cause side effects, yields a value of typeR
and never fails.
Constructors:
mo.NewTask()
docmo.NewTask1()
docmo.NewTask2()
docmo.NewTask3()
docmo.NewTask4()
docmo.NewTask5()
docmo.NewTaskFromIO()
docmo.NewTaskFromIO1()
docmo.NewTaskFromIO2()
docmo.NewTaskFromIO3()
docmo.NewTaskFromIO4()
docmo.NewTaskFromIO5()
doc
Methods:
.Run()
doc
TaskEither[T any]
TaskEither
represents a non-deterministic asynchronous computation that can cause side effects, yields a value of typeR
and can fail.
Constructors:
Methods:
State[S any, A any]
State
represents a function(S) -> (A, S)
, whereS
is state,A
is result.
Constructors:
Methods:
Foldable[T, U]
Foldable represents a type that can be folded into a single value based on its state.
mo.Fold[T, U, R any](f Foldable[T, U], successFunc func(U) R, failureFunc func(T) R) R
doc
🛩 Benchmark
// @TODO
This library does not usereflect
package. We don't expect overhead.
🤝 Contributing
- Ping me on Twitter@samuelberthe (DMs, mentions, whatever :))
- Fork theproject
- Fixopen issues or request new features
Don't hesitate ;)
With Docker
docker-compose run --rm dev
Without Docker
# Install some dev dependenciesmake tools# Run testsmake test# ormake watch-test
👤 Contributors
💫 Show your support
Give a ⭐️ if this project helped you!
📝 License
Copyright © 2022Samuel Berthe.
This project isMIT licensed.
Documentation¶
Index¶
- func Fold[T, U, R any](f Foldable[T, U], successFunc func(U) R, failureFunc func(T) R) R
- type Either
- func (e Either[L, R]) ForEach(leftCb func(L), rightCb func(R))
- func (e Either[L, R]) IsLeft() bool
- func (e Either[L, R]) IsRight() bool
- func (e Either[L, R]) Left() (L, bool)
- func (e Either[L, R]) LeftOrElse(fallback L) L
- func (e Either[L, R]) LeftOrEmpty() L
- func (e Either[L, R]) MapLeft(mapper func(L) Either[L, R]) Either[L, R]
- func (e Either[L, R]) MapRight(mapper func(R) Either[L, R]) Either[L, R]
- func (e Either[L, R]) Match(onLeft func(L) Either[L, R], onRight func(R) Either[L, R]) Either[L, R]
- func (e Either[L, R]) MustLeft() L
- func (e Either[L, R]) MustRight() R
- func (e Either[L, R]) Right() (R, bool)
- func (e Either[L, R]) RightOrElse(fallback R) R
- func (e Either[L, R]) RightOrEmpty() R
- func (e Either[L, R]) Swap() Either[R, L]
- func (e Either[L, R]) Unpack() (L, R)
- type Either3
- func (e Either3[T1, T2, T3]) Arg1() (T1, bool)
- func (e Either3[T1, T2, T3]) Arg1OrElse(fallback T1) T1
- func (e Either3[T1, T2, T3]) Arg1OrEmpty() T1
- func (e Either3[T1, T2, T3]) Arg2() (T2, bool)
- func (e Either3[T1, T2, T3]) Arg2OrElse(fallback T2) T2
- func (e Either3[T1, T2, T3]) Arg2OrEmpty() T2
- func (e Either3[T1, T2, T3]) Arg3() (T3, bool)
- func (e Either3[T1, T2, T3]) Arg3OrElse(fallback T3) T3
- func (e Either3[T1, T2, T3]) Arg3OrEmpty() T3
- func (e Either3[T1, T2, T3]) ForEach(arg1Cb func(T1), arg2Cb func(T2), arg3Cb func(T3))
- func (e Either3[T1, T2, T3]) IsArg1() bool
- func (e Either3[T1, T2, T3]) IsArg2() bool
- func (e Either3[T1, T2, T3]) IsArg3() bool
- func (e Either3[T1, T2, T3]) MapArg1(mapper func(T1) Either3[T1, T2, T3]) Either3[T1, T2, T3]
- func (e Either3[T1, T2, T3]) MapArg2(mapper func(T2) Either3[T1, T2, T3]) Either3[T1, T2, T3]
- func (e Either3[T1, T2, T3]) MapArg3(mapper func(T3) Either3[T1, T2, T3]) Either3[T1, T2, T3]
- func (e Either3[T1, T2, T3]) Match(onArg1 func(T1) Either3[T1, T2, T3], onArg2 func(T2) Either3[T1, T2, T3], ...) Either3[T1, T2, T3]
- func (e Either3[T1, T2, T3]) MustArg1() T1
- func (e Either3[T1, T2, T3]) MustArg2() T2
- func (e Either3[T1, T2, T3]) MustArg3() T3
- func (e Either3[T1, T2, T3]) Unpack() (T1, T2, T3)
- type Either4
- func NewEither4Arg1[T1 any, T2 any, T3 any, T4 any](value T1) Either4[T1, T2, T3, T4]
- func NewEither4Arg2[T1 any, T2 any, T3 any, T4 any](value T2) Either4[T1, T2, T3, T4]
- func NewEither4Arg3[T1 any, T2 any, T3 any, T4 any](value T3) Either4[T1, T2, T3, T4]
- func NewEither4Arg4[T1 any, T2 any, T3 any, T4 any](value T4) Either4[T1, T2, T3, T4]
- func (e Either4[T1, T2, T3, T4]) Arg1() (T1, bool)
- func (e Either4[T1, T2, T3, T4]) Arg1OrElse(fallback T1) T1
- func (e Either4[T1, T2, T3, T4]) Arg1OrEmpty() T1
- func (e Either4[T1, T2, T3, T4]) Arg2() (T2, bool)
- func (e Either4[T1, T2, T3, T4]) Arg2OrElse(fallback T2) T2
- func (e Either4[T1, T2, T3, T4]) Arg2OrEmpty() T2
- func (e Either4[T1, T2, T3, T4]) Arg3() (T3, bool)
- func (e Either4[T1, T2, T3, T4]) Arg3OrElse(fallback T3) T3
- func (e Either4[T1, T2, T3, T4]) Arg3OrEmpty() T3
- func (e Either4[T1, T2, T3, T4]) Arg4() (T4, bool)
- func (e Either4[T1, T2, T3, T4]) Arg4OrElse(fallback T4) T4
- func (e Either4[T1, T2, T3, T4]) Arg4OrEmpty() T4
- func (e Either4[T1, T2, T3, T4]) ForEach(arg1Cb func(T1), arg2Cb func(T2), arg3Cb func(T3), arg4Cb func(T4))
- func (e Either4[T1, T2, T3, T4]) IsArg1() bool
- func (e Either4[T1, T2, T3, T4]) IsArg2() bool
- func (e Either4[T1, T2, T3, T4]) IsArg3() bool
- func (e Either4[T1, T2, T3, T4]) IsArg4() bool
- func (e Either4[T1, T2, T3, T4]) MapArg1(mapper func(T1) Either4[T1, T2, T3, T4]) Either4[T1, T2, T3, T4]
- func (e Either4[T1, T2, T3, T4]) MapArg2(mapper func(T2) Either4[T1, T2, T3, T4]) Either4[T1, T2, T3, T4]
- func (e Either4[T1, T2, T3, T4]) MapArg3(mapper func(T3) Either4[T1, T2, T3, T4]) Either4[T1, T2, T3, T4]
- func (e Either4[T1, T2, T3, T4]) MapArg4(mapper func(T4) Either4[T1, T2, T3, T4]) Either4[T1, T2, T3, T4]
- func (e Either4[T1, T2, T3, T4]) Match(onArg1 func(T1) Either4[T1, T2, T3, T4], ...) Either4[T1, T2, T3, T4]
- func (e Either4[T1, T2, T3, T4]) MustArg1() T1
- func (e Either4[T1, T2, T3, T4]) MustArg2() T2
- func (e Either4[T1, T2, T3, T4]) MustArg3() T3
- func (e Either4[T1, T2, T3, T4]) MustArg4() T4
- func (e Either4[T1, T2, T3, T4]) Unpack() (T1, T2, T3, T4)
- type Either5
- func NewEither5Arg1[T1 any, T2 any, T3 any, T4 any, T5 any](value T1) Either5[T1, T2, T3, T4, T5]
- func NewEither5Arg2[T1 any, T2 any, T3 any, T4 any, T5 any](value T2) Either5[T1, T2, T3, T4, T5]
- func NewEither5Arg3[T1 any, T2 any, T3 any, T4 any, T5 any](value T3) Either5[T1, T2, T3, T4, T5]
- func NewEither5Arg4[T1 any, T2 any, T3 any, T4 any, T5 any](value T4) Either5[T1, T2, T3, T4, T5]
- func NewEither5Arg5[T1 any, T2 any, T3 any, T4 any, T5 any](value T5) Either5[T1, T2, T3, T4, T5]
- func (e Either5[T1, T2, T3, T4, T5]) Arg1() (T1, bool)
- func (e Either5[T1, T2, T3, T4, T5]) Arg1OrElse(fallback T1) T1
- func (e Either5[T1, T2, T3, T4, T5]) Arg1OrEmpty() T1
- func (e Either5[T1, T2, T3, T4, T5]) Arg2() (T2, bool)
- func (e Either5[T1, T2, T3, T4, T5]) Arg2OrElse(fallback T2) T2
- func (e Either5[T1, T2, T3, T4, T5]) Arg2OrEmpty() T2
- func (e Either5[T1, T2, T3, T4, T5]) Arg3() (T3, bool)
- func (e Either5[T1, T2, T3, T4, T5]) Arg3OrElse(fallback T3) T3
- func (e Either5[T1, T2, T3, T4, T5]) Arg3OrEmpty() T3
- func (e Either5[T1, T2, T3, T4, T5]) Arg4() (T4, bool)
- func (e Either5[T1, T2, T3, T4, T5]) Arg4OrElse(fallback T4) T4
- func (e Either5[T1, T2, T3, T4, T5]) Arg4OrEmpty() T4
- func (e Either5[T1, T2, T3, T4, T5]) Arg5() (T5, bool)
- func (e Either5[T1, T2, T3, T4, T5]) Arg5OrElse(fallback T5) T5
- func (e Either5[T1, T2, T3, T4, T5]) Arg5OrEmpty() T5
- func (e Either5[T1, T2, T3, T4, T5]) ForEach(arg1Cb func(T1), arg2Cb func(T2), arg3Cb func(T3), arg4Cb func(T4), ...)
- func (e Either5[T1, T2, T3, T4, T5]) IsArg1() bool
- func (e Either5[T1, T2, T3, T4, T5]) IsArg2() bool
- func (e Either5[T1, T2, T3, T4, T5]) IsArg3() bool
- func (e Either5[T1, T2, T3, T4, T5]) IsArg4() bool
- func (e Either5[T1, T2, T3, T4, T5]) IsArg5() bool
- func (e Either5[T1, T2, T3, T4, T5]) MapArg1(mapper func(T1) Either5[T1, T2, T3, T4, T5]) Either5[T1, T2, T3, T4, T5]
- func (e Either5[T1, T2, T3, T4, T5]) MapArg2(mapper func(T2) Either5[T1, T2, T3, T4, T5]) Either5[T1, T2, T3, T4, T5]
- func (e Either5[T1, T2, T3, T4, T5]) MapArg3(mapper func(T3) Either5[T1, T2, T3, T4, T5]) Either5[T1, T2, T3, T4, T5]
- func (e Either5[T1, T2, T3, T4, T5]) MapArg4(mapper func(T4) Either5[T1, T2, T3, T4, T5]) Either5[T1, T2, T3, T4, T5]
- func (e Either5[T1, T2, T3, T4, T5]) MapArg5(mapper func(T5) Either5[T1, T2, T3, T4, T5]) Either5[T1, T2, T3, T4, T5]
- func (e Either5[T1, T2, T3, T4, T5]) Match(onArg1 func(T1) Either5[T1, T2, T3, T4, T5], ...) Either5[T1, T2, T3, T4, T5]
- func (e Either5[T1, T2, T3, T4, T5]) MustArg1() T1
- func (e Either5[T1, T2, T3, T4, T5]) MustArg2() T2
- func (e Either5[T1, T2, T3, T4, T5]) MustArg3() T3
- func (e Either5[T1, T2, T3, T4, T5]) MustArg4() T4
- func (e Either5[T1, T2, T3, T4, T5]) MustArg5() T5
- func (e Either5[T1, T2, T3, T4, T5]) Unpack() (T1, T2, T3, T4, T5)
- type Foldable
- type Future
- func (f *Future[T]) Cancel()
- func (f *Future[T]) Catch(cb func(error) (T, error)) *Future[T]
- func (f *Future[T]) Collect() (T, error)
- func (f *Future[T]) Either() Either[error, T]
- func (f *Future[T]) Finally(cb func(T, error) (T, error)) *Future[T]
- func (f *Future[T]) Result() Result[T]
- func (f *Future[T]) Then(cb func(T) (T, error)) *Future[T]
- type IO
- type IO1
- type IO2
- type IO3
- type IO4
- type IO5
- type IOEither
- type IOEither1
- type IOEither2
- type IOEither3
- type IOEither4
- type IOEither5
- type Option
- func (o Option[T]) FlatMap(mapper func(value T) Option[T]) Option[T]
- func (o Option[T]) ForEach(onValue func(value T))
- func (o Option[T]) Get() (T, bool)
- func (o *Option[T]) GobDecode(data []byte) error
- func (o Option[T]) GobEncode() ([]byte, error)
- func (o Option[T]) IsAbsent() bool
- func (o Option[T]) IsPresent() bool
- func (o Option[T]) Map(mapper func(value T) (T, bool)) Option[T]
- func (o Option[T]) MapNone(mapper func() (T, bool)) Option[T]
- func (o Option[T]) MarshalBinary() ([]byte, error)
- func (o Option[T]) MarshalJSON() ([]byte, error)
- func (o Option[T]) MarshalText() ([]byte, error)
- func (o Option[T]) Match(onValue func(value T) (T, bool), onNone func() (T, bool)) Option[T]
- func (o Option[T]) MustGet() T
- func (o Option[T]) OrElse(fallback T) T
- func (o Option[T]) OrEmpty() T
- func (o *Option[T]) Scan(src any) error
- func (o Option[T]) Size() int
- func (o Option[T]) ToPointer() *T
- func (o *Option[T]) UnmarshalBinary(data []byte) error
- func (o *Option[T]) UnmarshalJSON(b []byte) error
- func (o *Option[T]) UnmarshalText(data []byte) error
- func (o Option[T]) Value() (driver.Value, error)
- type Result
- func (r Result[T]) Error() error
- func (r Result[T]) FlatMap(mapper func(value T) Result[T]) Result[T]
- func (r Result[T]) ForEach(mapper func(value T))
- func (r Result[T]) Get() (T, error)
- func (r Result[T]) IsError() bool
- func (r Result[T]) IsOk() bool
- func (r Result[T]) Map(mapper func(value T) (T, error)) Result[T]
- func (r Result[T]) MapErr(mapper func(error) (T, error)) Result[T]
- func (o Result[T]) MarshalJSON() ([]byte, error)
- func (r Result[T]) Match(onSuccess func(value T) (T, error), onError func(err error) (T, error)) Result[T]
- func (r Result[T]) MustGet() T
- func (r Result[T]) OrElse(fallback T) T
- func (r Result[T]) OrEmpty() T
- func (r Result[T]) ToEither() Either[error, T]
- func (o *Result[T]) UnmarshalJSON(data []byte) error
- type State
- type Task
- type Task1
- type Task2
- type Task3
- type Task4
- type Task5
- type TaskEither
- func (t TaskEither[R]) Match(onLeft func(error) Either[error, R], onRight func(R) Either[error, R]) Either[error, R]
- func (t TaskEither[R]) OrElse(fallback R) R
- func (t TaskEither[R]) ToEither() Either[error, R]
- func (t TaskEither[R]) ToTask(fallback R) Task[R]
- func (t TaskEither[R]) TryCatch(onLeft func(error) Either[error, R], onRight func(R) Either[error, R]) Either[error, R]
Constants¶
This section is empty.
Variables¶
This section is empty.
Functions¶
funcFold¶added inv1.12.0
Fold applies one of the two functions based on the state of the Foldable type,and it returns the result of applying either successFunc or failureFunc.
- T: the type of the failure value (e.g., an error type)- U: the type of the success value- R: the type of the return value from the folding functions
successFunc is applied when the Foldable is in the success state (i.e., isLeft() is false).failureFunc is applied when the Foldable is in the failure state (i.e., isLeft() is true).
Types¶
typeEither¶
Either respresents a value of 2 possible types.An instance of Either is an instance of either A or B.
func (Either[L, R])ForEach¶
func (eEither[L, R]) ForEach(leftCb func(L), rightCb func(R))
ForEach executes the given side-effecting function, depending of value is Left or Right.
func (Either[L, R])LeftOrElse¶
func (eEither[L, R]) LeftOrElse(fallback L) L
LeftOrElse returns left value of a Either struct or fallback.
func (Either[L, R])LeftOrEmpty¶
func (eEither[L, R]) LeftOrEmpty() L
LeftOrEmpty returns left value of a Either struct or empty value.
func (Either[L, R])MapLeft¶
MapLeft executes the given function, if Either is of type Left, and returns result.
func (Either[L, R])MapRight¶
MapRight executes the given function, if Either is of type Right, and returns result.
func (Either[L, R])Match¶
Match executes the given function, depending of value is Left or Right, and returns result.
func (Either[L, R])MustLeft¶
func (eEither[L, R]) MustLeft() L
MustLeft returns left value of a Either struct or panics.
func (Either[L, R])MustRight¶
func (eEither[L, R]) MustRight() R
MustRight returns right value of a Either struct or panics.
func (Either[L, R])RightOrElse¶
func (eEither[L, R]) RightOrElse(fallback R) R
RightOrElse returns right value of a Either struct or fallback.
func (Either[L, R])RightOrEmpty¶
func (eEither[L, R]) RightOrEmpty() R
RightOrEmpty returns right value of a Either struct or empty value.
typeEither3¶added inv1.2.0
Either3 represents a value of 3 possible types.An instance of Either3 is an instance of either T1, T2 or T3.
funcNewEither3Arg1¶added inv1.2.0
NewEither3Arg1 builds the first argument of the Either3 struct.
funcNewEither3Arg2¶added inv1.2.0
NewEither3Arg2 builds the second argument of the Either3 struct.
funcNewEither3Arg3¶added inv1.2.0
NewEither3Arg3 builds the third argument of the Either3 struct.
func (Either3[T1, T2, T3])Arg1OrElse¶added inv1.2.0
func (eEither3[T1, T2, T3]) Arg1OrElse(fallback T1) T1
Arg1OrElse returns the first argument of a Either3 struct or fallback.
func (Either3[T1, T2, T3])Arg1OrEmpty¶added inv1.2.0
func (eEither3[T1, T2, T3]) Arg1OrEmpty() T1
Arg1OrEmpty returns the first argument of a Either3 struct or empty value.
func (Either3[T1, T2, T3])Arg2OrElse¶added inv1.2.0
func (eEither3[T1, T2, T3]) Arg2OrElse(fallback T2) T2
Arg2OrElse returns the second argument of a Either3 struct or fallback.
func (Either3[T1, T2, T3])Arg2OrEmpty¶added inv1.2.0
func (eEither3[T1, T2, T3]) Arg2OrEmpty() T2
Arg2OrEmpty returns the second argument of a Either3 struct or empty value.
func (Either3[T1, T2, T3])Arg3OrElse¶added inv1.2.0
func (eEither3[T1, T2, T3]) Arg3OrElse(fallback T3) T3
Arg3OrElse returns the third argument of a Either3 struct or fallback.
func (Either3[T1, T2, T3])Arg3OrEmpty¶added inv1.2.0
func (eEither3[T1, T2, T3]) Arg3OrEmpty() T3
Arg3OrEmpty returns the third argument of a Either3 struct or empty value.
func (Either3[T1, T2, T3])ForEach¶added inv1.2.0
func (eEither3[T1, T2, T3]) ForEach(arg1Cb func(T1), arg2Cb func(T2), arg3Cb func(T3))
ForEach executes the given side-effecting function, depending of the argument set.
func (Either3[T1, T2, T3])IsArg1¶added inv1.2.0
IsArg1 returns true if Either3 uses the first argument.
func (Either3[T1, T2, T3])IsArg2¶added inv1.2.0
IsArg2 returns true if Either3 uses the second argument.
func (Either3[T1, T2, T3])IsArg3¶added inv1.2.0
IsArg3 returns true if Either3 uses the third argument.
func (Either3[T1, T2, T3])MapArg1¶added inv1.2.0
MapArg1 executes the given function, if Either3 use the first argument, and returns result.
func (Either3[T1, T2, T3])MapArg2¶added inv1.2.0
MapArg2 executes the given function, if Either3 use the second argument, and returns result.
func (Either3[T1, T2, T3])MapArg3¶added inv1.2.0
MapArg3 executes the given function, if Either3 use the third argument, and returns result.
func (Either3[T1, T2, T3])Match¶added inv1.2.0
func (eEither3[T1, T2, T3]) Match(onArg1 func(T1)Either3[T1, T2, T3],onArg2 func(T2)Either3[T1, T2, T3],onArg3 func(T3)Either3[T1, T2, T3])Either3[T1, T2, T3]
Match executes the given function, depending of the argument set, and returns result.
func (Either3[T1, T2, T3])MustArg1¶added inv1.2.0
func (eEither3[T1, T2, T3]) MustArg1() T1
MustArg1 returns the first argument of a Either3 struct or panics.
func (Either3[T1, T2, T3])MustArg2¶added inv1.2.0
func (eEither3[T1, T2, T3]) MustArg2() T2
MustArg2 returns the second argument of a Either3 struct or panics.
typeEither4¶added inv1.2.0
Either4 respresents a value of 4 possible types.An instance of Either4 is an instance of either T1, T2, T3 or T4.
funcNewEither4Arg1¶added inv1.2.0
NewEither4Arg1 builds the first argument of the Either4 struct.
funcNewEither4Arg2¶added inv1.2.0
NewEither4Arg2 builds the second argument of the Either4 struct.
funcNewEither4Arg3¶added inv1.2.0
NewEither4Arg3 builds the third argument of the Either4 struct.
funcNewEither4Arg4¶added inv1.2.0
NewEither4Arg4 builds the fourth argument of the Either4 struct.
func (Either4[T1, T2, T3, T4])Arg1¶added inv1.2.0
Arg1 returns the first argument of a Either4 struct.
func (Either4[T1, T2, T3, T4])Arg1OrElse¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) Arg1OrElse(fallback T1) T1
Arg1OrElse returns the first argument of a Either4 struct or fallback.
func (Either4[T1, T2, T3, T4])Arg1OrEmpty¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) Arg1OrEmpty() T1
Arg1OrEmpty returns the first argument of a Either4 struct or empty value.
func (Either4[T1, T2, T3, T4])Arg2¶added inv1.2.0
Arg2 returns the second argument of a Either4 struct.
func (Either4[T1, T2, T3, T4])Arg2OrElse¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) Arg2OrElse(fallback T2) T2
Arg2OrElse returns the second argument of a Either4 struct or fallback.
func (Either4[T1, T2, T3, T4])Arg2OrEmpty¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) Arg2OrEmpty() T2
Arg2OrEmpty returns the second argument of a Either4 struct or empty value.
func (Either4[T1, T2, T3, T4])Arg3¶added inv1.2.0
Arg3 returns the third argument of a Either4 struct.
func (Either4[T1, T2, T3, T4])Arg3OrElse¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) Arg3OrElse(fallback T3) T3
Arg3OrElse returns the third argument of a Either4 struct or fallback.
func (Either4[T1, T2, T3, T4])Arg3OrEmpty¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) Arg3OrEmpty() T3
Arg3OrEmpty returns the third argument of a Either4 struct or empty value.
func (Either4[T1, T2, T3, T4])Arg4¶added inv1.2.0
Arg4 returns the fourth argument of a Either4 struct.
func (Either4[T1, T2, T3, T4])Arg4OrElse¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) Arg4OrElse(fallback T4) T4
Arg4OrElse returns the fourth argument of a Either4 struct or fallback.
func (Either4[T1, T2, T3, T4])Arg4OrEmpty¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) Arg4OrEmpty() T4
Arg4OrEmpty returns the fourth argument of a Either4 struct or empty value.
func (Either4[T1, T2, T3, T4])ForEach¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) ForEach(arg1Cb func(T1), arg2Cb func(T2), arg3Cb func(T3), arg4Cb func(T4))
ForEach executes the given side-effecting function, depending of the argument set.
func (Either4[T1, T2, T3, T4])IsArg1¶added inv1.2.0
IsArg1 returns true if Either4 uses the first argument.
func (Either4[T1, T2, T3, T4])IsArg2¶added inv1.2.0
IsArg2 returns true if Either4 uses the second argument.
func (Either4[T1, T2, T3, T4])IsArg3¶added inv1.2.0
IsArg3 returns true if Either4 uses the third argument.
func (Either4[T1, T2, T3, T4])IsArg4¶added inv1.2.0
IsArg4 returns true if Either4 uses the fourth argument.
func (Either4[T1, T2, T3, T4])MapArg1¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) MapArg1(mapper func(T1)Either4[T1, T2, T3, T4])Either4[T1, T2, T3, T4]
MapArg1 executes the given function, if Either4 use the first argument, and returns result.
func (Either4[T1, T2, T3, T4])MapArg2¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) MapArg2(mapper func(T2)Either4[T1, T2, T3, T4])Either4[T1, T2, T3, T4]
MapArg2 executes the given function, if Either4 use the second argument, and returns result.
func (Either4[T1, T2, T3, T4])MapArg3¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) MapArg3(mapper func(T3)Either4[T1, T2, T3, T4])Either4[T1, T2, T3, T4]
MapArg3 executes the given function, if Either4 use the third argument, and returns result.
func (Either4[T1, T2, T3, T4])MapArg4¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) MapArg4(mapper func(T4)Either4[T1, T2, T3, T4])Either4[T1, T2, T3, T4]
MapArg4 executes the given function, if Either4 use the fourth argument, and returns result.
func (Either4[T1, T2, T3, T4])Match¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) Match(onArg1 func(T1)Either4[T1, T2, T3, T4],onArg2 func(T2)Either4[T1, T2, T3, T4],onArg3 func(T3)Either4[T1, T2, T3, T4],onArg4 func(T4)Either4[T1, T2, T3, T4])Either4[T1, T2, T3, T4]
Match executes the given function, depending of the argument set, and returns result.
func (Either4[T1, T2, T3, T4])MustArg1¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) MustArg1() T1
MustArg1 returns the first argument of a Either4 struct or panics.
func (Either4[T1, T2, T3, T4])MustArg2¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) MustArg2() T2
MustArg2 returns the second argument of a Either4 struct or panics.
func (Either4[T1, T2, T3, T4])MustArg3¶added inv1.2.0
func (eEither4[T1, T2, T3, T4]) MustArg3() T3
MustArg3 returns the third argument of a Either4 struct or panics.
typeEither5¶added inv1.2.0
Either5 respresents a value of 5 possible types.An instance of Either5 is an instance of either T1, T2, T3, T4, or T5.
funcNewEither5Arg1¶added inv1.2.0
NewEither5Arg1 builds the first argument of the Either5 struct.
funcNewEither5Arg2¶added inv1.2.0
NewEither5Arg2 builds the second argument of the Either5 struct.
funcNewEither5Arg3¶added inv1.2.0
NewEither5Arg3 builds the third argument of the Either5 struct.
funcNewEither5Arg4¶added inv1.2.0
NewEither5Arg4 builds the fourth argument of the Either5 struct.
funcNewEither5Arg5¶added inv1.2.0
NewEither5Arg5 builds the fith argument of the Either5 struct.
func (Either5[T1, T2, T3, T4, T5])Arg1¶added inv1.2.0
Arg1 returns the first argument of a Either5 struct.
func (Either5[T1, T2, T3, T4, T5])Arg1OrElse¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg1OrElse(fallback T1) T1
Arg1OrElse returns the first argument of a Either5 struct or fallback.
func (Either5[T1, T2, T3, T4, T5])Arg1OrEmpty¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg1OrEmpty() T1
Arg1OrEmpty returns the first argument of a Either5 struct or empty value.
func (Either5[T1, T2, T3, T4, T5])Arg2¶added inv1.2.0
Arg2 returns the second argument of a Either5 struct.
func (Either5[T1, T2, T3, T4, T5])Arg2OrElse¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg2OrElse(fallback T2) T2
Arg2OrElse returns the second argument of a Either5 struct or fallback.
func (Either5[T1, T2, T3, T4, T5])Arg2OrEmpty¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg2OrEmpty() T2
Arg2OrEmpty returns the second argument of a Either5 struct or empty value.
func (Either5[T1, T2, T3, T4, T5])Arg3¶added inv1.2.0
Arg3 returns the third argument of a Either5 struct.
func (Either5[T1, T2, T3, T4, T5])Arg3OrElse¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg3OrElse(fallback T3) T3
Arg3OrElse returns the third argument of a Either5 struct or fallback.
func (Either5[T1, T2, T3, T4, T5])Arg3OrEmpty¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg3OrEmpty() T3
Arg3OrEmpty returns the third argument of a Either5 struct or empty value.
func (Either5[T1, T2, T3, T4, T5])Arg4¶added inv1.2.0
Arg4 returns the fourth argument of a Either5 struct.
func (Either5[T1, T2, T3, T4, T5])Arg4OrElse¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg4OrElse(fallback T4) T4
Arg4OrElse returns the fourth argument of a Either5 struct or fallback.
func (Either5[T1, T2, T3, T4, T5])Arg4OrEmpty¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg4OrEmpty() T4
Arg4OrEmpty returns the fourth argument of a Either5 struct or empty value.
func (Either5[T1, T2, T3, T4, T5])Arg5¶added inv1.2.0
Arg5 returns the fith argument of a Either5 struct.
func (Either5[T1, T2, T3, T4, T5])Arg5OrElse¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg5OrElse(fallback T5) T5
Arg5OrElse returns the fith argument of a Either5 struct or fallback.
func (Either5[T1, T2, T3, T4, T5])Arg5OrEmpty¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Arg5OrEmpty() T5
Arg5OrEmpty returns the fifth argument of a Either5 struct or empty value.
func (Either5[T1, T2, T3, T4, T5])ForEach¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) ForEach(arg1Cb func(T1), arg2Cb func(T2), arg3Cb func(T3), arg4Cb func(T4), arg5Cb func(T5))
ForEach executes the given side-effecting function, depending of the argument set.
func (Either5[T1, T2, T3, T4, T5])IsArg1¶added inv1.2.0
IsArg1 returns true if Either5 uses the first argument.
func (Either5[T1, T2, T3, T4, T5])IsArg2¶added inv1.2.0
IsArg2 returns true if Either5 uses the second argument.
func (Either5[T1, T2, T3, T4, T5])IsArg3¶added inv1.2.0
IsArg3 returns true if Either5 uses the third argument.
func (Either5[T1, T2, T3, T4, T5])IsArg4¶added inv1.2.0
IsArg4 returns true if Either5 uses the fourth argument.
func (Either5[T1, T2, T3, T4, T5])IsArg5¶added inv1.2.0
IsArg5 returns true if Either5 uses the fith argument.
func (Either5[T1, T2, T3, T4, T5])MapArg1¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) MapArg1(mapper func(T1)Either5[T1, T2, T3, T4, T5])Either5[T1, T2, T3, T4, T5]
MapArg1 executes the given function, if Either5 use the first argument, and returns result.
func (Either5[T1, T2, T3, T4, T5])MapArg2¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) MapArg2(mapper func(T2)Either5[T1, T2, T3, T4, T5])Either5[T1, T2, T3, T4, T5]
MapArg2 executes the given function, if Either5 use the second argument, and returns result.
func (Either5[T1, T2, T3, T4, T5])MapArg3¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) MapArg3(mapper func(T3)Either5[T1, T2, T3, T4, T5])Either5[T1, T2, T3, T4, T5]
MapArg3 executes the given function, if Either5 use the third argument, and returns result.
func (Either5[T1, T2, T3, T4, T5])MapArg4¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) MapArg4(mapper func(T4)Either5[T1, T2, T3, T4, T5])Either5[T1, T2, T3, T4, T5]
MapArg4 executes the given function, if Either5 use the fourth argument, and returns result.
func (Either5[T1, T2, T3, T4, T5])MapArg5¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) MapArg5(mapper func(T5)Either5[T1, T2, T3, T4, T5])Either5[T1, T2, T3, T4, T5]
MapArg5 executes the given function, if Either5 use the fith argument, and returns result.
func (Either5[T1, T2, T3, T4, T5])Match¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) Match(onArg1 func(T1)Either5[T1, T2, T3, T4, T5],onArg2 func(T2)Either5[T1, T2, T3, T4, T5],onArg3 func(T3)Either5[T1, T2, T3, T4, T5],onArg4 func(T4)Either5[T1, T2, T3, T4, T5],onArg5 func(T5)Either5[T1, T2, T3, T4, T5])Either5[T1, T2, T3, T4, T5]
Match executes the given function, depending of the argument set, and returns result.
func (Either5[T1, T2, T3, T4, T5])MustArg1¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) MustArg1() T1
MustArg1 returns the first argument of a Either5 struct or panics.
func (Either5[T1, T2, T3, T4, T5])MustArg2¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) MustArg2() T2
MustArg2 returns the second argument of a Either5 struct or panics.
func (Either5[T1, T2, T3, T4, T5])MustArg3¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) MustArg3() T3
MustArg3 returns the third argument of a Either5 struct or panics.
func (Either5[T1, T2, T3, T4, T5])MustArg4¶added inv1.2.0
func (eEither5[T1, T2, T3, T4, T5]) MustArg4() T4
MustArg4 returns the fourth argument of a Either5 struct or panics.
typeFoldable¶added inv1.12.0
Foldable represents a type that can be folded into a single valuebased on its state.
- T: the type of the value in the failure state (e.g., an error type).- U: the type of the value in the success state.
typeFuture¶
type Future[Tany] struct {// contains filtered or unexported fields}
Future represents a value which may or may not currently be available, but will beavailable at some point, or an exception if that value could not be made available.
func (*Future[T])Finally¶
Finally is called when Future is processed either resolved or rejected. It returns a new Future.
typeIO¶
type IO[Rany] struct {// contains filtered or unexported fields}
IO represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
typeIO1¶
IO1 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
typeIO2¶
IO2 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
typeIO3¶
IO3 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
typeIO4¶
IO4 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
typeIO5¶
IO5 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
typeIOEither¶
type IOEither[Rany] struct {// contains filtered or unexported fields}
IOEither represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and can fail.
typeIOEither1¶
IOEither1 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and can fail.
funcNewIOEither1¶
NewIOEither1 instanciates a new IO1.
typeIOEither2¶
IOEither2 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and can fail.
funcNewIOEither2¶
NewIOEither2 instanciates a new IO2.
typeIOEither3¶
IOEither3 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and can fail.
funcNewIOEither3¶
NewIOEither3 instanciates a new IO3.
typeIOEither4¶
IOEither4 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and can fail.
funcNewIOEither4¶
NewIOEither4 instanciates a new IO4.
typeIOEither5¶
type IOEither5[Rany, Aany, Bany, Cany, Dany, Eany] struct {// contains filtered or unexported fields}
IOEither5 represents a non-deterministic synchronous computation thatcan cause side effects, yields a value of type `R` and can fail.
typeOption¶
type Option[Tany] struct {// contains filtered or unexported fields}
Option is a container for an optional value of type T. If value exists, Option isof type Some. If the value is absent, Option is of type None.
funcEmptyableToOption¶added inv1.5.0
EmptyableToOption builds a Some Option when value is not empty, or None.Play:https://go.dev/play/p/GSpQQ-q-UES
funcNone¶
None builds an Option when value is absent.Play:https://go.dev/play/p/yYQPsYCSYlD
funcPointerToOption¶added inv1.8.0
PointerToOption builds a Some Option when value is not nil, or None.Play:https://go.dev/play/p/yPVMj4DUb-I
funcSome¶
Some builds an Option when value is present.Play:https://go.dev/play/p/iqz2n9n0tDM
funcTupleToOption¶
TupleToOption builds a Some Option when second argument is true, or None.Play:https://go.dev/play/p/gkrg2pZwOty
func (Option[T])FlatMap¶
FlatMap executes the mapper function if value is present or returns None if absent.Play:https://go.dev/play/p/OXO-zJx6n5r
func (Option[T])ForEach¶
func (oOption[T]) ForEach(onValue func(value T))
ForEach executes the given side-effecting function of value is present.
func (Option[T])Get¶
Get returns value and presence.Play:https://go.dev/play/p/0-JBa1usZRT
func (Option[T])IsAbsent¶
IsAbsent returns false when value is present.Play:https://go.dev/play/p/23e2zqyVOQm
func (Option[T])IsPresent¶
IsPresent returns false when value is absent.Play:https://go.dev/play/p/nDqIaiihyCA
func (Option[T])Map¶
Map executes the mapper function if value is present or returns None if absent.Play:https://go.dev/play/p/mvfP3pcP_eJ
func (Option[T])MapNone¶
MapNone executes the mapper function if value is absent or returns Option.Play:https://go.dev/play/p/_KaHWZ6Q17b
func (Option[T])MarshalBinary¶added inv1.4.0
MarshalBinary is the interface implemented by an object that can marshal itself into a binary form.
func (Option[T])MarshalJSON¶added inv1.3.0
MarshalJSON encodes Option into json.
func (Option[T])MarshalText¶added inv1.4.0
MarshalText implements the encoding.TextMarshaler interface.
func (Option[T])Match¶
Match executes the first function if value is present and second function if absent.It returns a new Option.Play:https://go.dev/play/p/1V6st3LDJsM
func (Option[T])MustGet¶
func (oOption[T]) MustGet() T
MustGet returns value if present or panics instead.Play:https://go.dev/play/p/RVBckjdi5WR
func (Option[T])OrElse¶
func (oOption[T]) OrElse(fallback T) T
OrElse returns value if present or default value.Play:https://go.dev/play/p/TrGByFWCzXS
func (Option[T])OrEmpty¶
func (oOption[T]) OrEmpty() T
OrEmpty returns value if present or empty value.Play:https://go.dev/play/p/SpSUJcE-tQm
func (Option[T])Size¶
Size returns 1 when value is present or 0 instead.Play:https://go.dev/play/p/7ixCNG1E9l7
func (Option[T])ToPointer¶added inv1.10.0
func (oOption[T]) ToPointer() *T
ToPointer returns value if present or a nil pointer.Play:https://go.dev/play/p/N43w92SM-Bs
func (*Option[T])UnmarshalBinary¶added inv1.4.0
UnmarshalBinary is the interface implemented by an object that can unmarshal a binary representation of itself.
func (*Option[T])UnmarshalJSON¶added inv1.3.0
UnmarshalJSON decodes Option from json.
func (*Option[T])UnmarshalText¶added inv1.4.0
UnmarshalText implements the encoding.TextUnmarshaler interface.
typeResult¶
type Result[Tany] struct {// contains filtered or unexported fields}
Result represents a result of an action having oneof the following output: success or failure.An instance of Result is an instance of either Ok or Err.It could be compared to `Either[error, T]`.
funcDo¶added inv1.12.0
Do executes a function within a monadic context, capturing any errors that occur.If the function executes successfully, its result is wrapped in a successful Result.If the function panics (indicating a failure), the panic is caught and converted into an error Result.
funcErr¶
Err builds a Result when value is invalid.Play:https://go.dev/play/p/PDwADdzNoyZ
funcErrf¶added inv1.10.0
Errf builds a Result when value is invalid.Errf formats according to a format specifier and returns the error as a value that satisfies Result[T].Play:https://go.dev/play/p/N43w92SM-Bs
funcOk¶
Ok builds a Result when value is valid.Play:https://go.dev/play/p/PDwADdzNoyZ
funcTry¶added inv1.1.0
Try returns either a Ok or Err object.Play:https://go.dev/play/p/ilOlQx-Mx42
funcTupleToResult¶
TupleToResult convert a pair of T and error into a Result.Play:https://go.dev/play/p/KWjfqQDHQwa
func (Result[T])Error¶
Error returns error when value is invalid or nil.Play:https://go.dev/play/p/CSkHGTyiXJ5
func (Result[T])FlatMap¶
FlatMap executes the mapper function if Result is valid. It returns a new Result.Play:https://go.dev/play/p/Ud5QjZOqg-7
func (Result[T])ForEach¶
func (rResult[T]) ForEach(mapper func(value T))
ForEach executes the given side-effecting function if Result is valid.
func (Result[T])Get¶
Get returns value and error.Play:https://go.dev/play/p/8KyX3z6TuNo
func (Result[T])IsError¶
IsError returns true when value is invalid.Play:https://go.dev/play/p/xkV9d464scV
func (Result[T])IsOk¶
IsOk returns true when value is valid.Play:https://go.dev/play/p/sfNvBQyZfgU
func (Result[T])Map¶
Map executes the mapper function if Result is valid. It returns a new Result.Play:https://go.dev/play/p/-ndpN_b_OSc
func (Result[T])MapErr¶
MapErr executes the mapper function if Result is invalid. It returns a new Result.Play:https://go.dev/play/p/WraZixg9GGf
func (Result[T])MarshalJSON¶added inv1.11.0
MarshalJSON encodes Result into json, following the JSON-RPC specification for results,with one exception: when the result is an error, the "code" field is not included.Reference:https://www.jsonrpc.org/specification
func (Result[T])Match¶
func (rResult[T]) Match(onSuccess func(value T) (T,error), onError func(errerror) (T,error))Result[T]
Match executes the first function if Result is valid and second function if invalid.It returns a new Result.Play:https://go.dev/play/p/-_eFaLJ31co
func (Result[T])MustGet¶
func (rResult[T]) MustGet() T
MustGet returns value when Result is valid or panics.Play:https://go.dev/play/p/8LSlndHoTAE
func (Result[T])OrElse¶
func (rResult[T]) OrElse(fallback T) T
OrElse returns value when Result is valid or default value.Play:https://go.dev/play/p/MN_ULx0soi6
func (Result[T])OrEmpty¶
func (rResult[T]) OrEmpty() T
OrEmpty returns value when Result is valid or empty value.Play:https://go.dev/play/p/rdKtBmOcMLh
func (Result[T])ToEither¶
ToEither transforms a Result into an Either type.Play:https://go.dev/play/p/Uw1Zz6b952q
func (*Result[T])UnmarshalJSON¶added inv1.11.0
UnmarshalJSON decodes json into Result. If "error" is set, the result is anErr containing the error message as a generic error object. Otherwise, theresult is an Ok containing the result. If the JSON object contains netiheran error nor a result, the result is an Ok containing an empty value. If theJSON object contains both an error and a result, the result is an Err. Finally,if the JSON object contains an error but is not structured correctly (no messagefield), the unmarshaling fails.
typeState¶
State represents a function `(S) -> (A, S)`, where `S` is state, `A` is result.
funcReturnState¶
typeTask¶
type Task[Rany] struct {// contains filtered or unexported fields}
Task represents a non-deterministic asynchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
funcNewTaskFromIO¶
NewTaskFromIO instanciates a new Task from an existing IO.
typeTask1¶
Task1 represents a non-deterministic asynchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
funcNewTaskFromIO1¶
NewTaskFromIO1 instanciates a new Task1 from an existing IO1.
typeTask2¶
Task2 represents a non-deterministic asynchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
funcNewTaskFromIO2¶
NewTaskFromIO2 instanciates a new Task2 from an existing IO2.
typeTask3¶
Task3 represents a non-deterministic asynchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
funcNewTaskFromIO3¶
NewTaskFromIO3 instanciates a new Task3 from an existing IO3.
typeTask4¶
Task4 represents a non-deterministic asynchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
funcNewTaskFromIO4¶
NewTaskFromIO4 instanciates a new Task4 from an existing IO4.
typeTask5¶
Task5 represents a non-deterministic asynchronous computation thatcan cause side effects, yields a value of type `R` and never fails.
typeTaskEither¶
TaskEither represents a non-deterministic asynchronous computation thatcan cause side effects, yields a value of type `R` and can fail.
funcNewTaskEither¶
func NewTaskEither[Rany](f ff0[R])TaskEither[R]
NewTaskEither instanciates a new TaskEither.
funcNewTaskEitherFromIO¶
func NewTaskEitherFromIO[Rany](ioIO[R])TaskEither[R]
NewTaskEitherFromIO instanciates a new TaskEither from an existing IO.
func (TaskEither[R])Match¶
func (tTaskEither[R]) Match(onLeft func(error)Either[error, R], onRight func(R)Either[error, R])Either[error, R]
Match executes the first function if task succeeded and second function if task failed.It returns a new Option.
func (TaskEither[R])OrElse¶
func (tTaskEither[R]) OrElse(fallback R) R
OrElse returns value if task succeeded or default value.
func (TaskEither[R])ToEither¶
func (tTaskEither[R]) ToEither()Either[error, R]
ToEither converts TaskEither to Either.
func (TaskEither[R])ToTask¶
func (tTaskEither[R]) ToTask(fallback R)Task[R]
ToTask converts TaskEither to Task