mirror of
https://github.com/IBM/fp-go.git
synced 2025-06-23 00:27:49 +02:00
17 lines
410 B
Go
17 lines
410 B
Go
package option
|
|
|
|
import (
|
|
F "github.com/ibm/fp-go/function"
|
|
)
|
|
|
|
// HKTA = HKT<A>
|
|
// HKTOA = HKT<Option<A>>
|
|
//
|
|
// Sequence converts an option of some higher kinded type into the higher kinded type of an option
|
|
func Sequence[A, HKTA, HKTOA any](
|
|
_of func(Option[A]) HKTOA,
|
|
_map func(HKTA, func(A) Option[A]) HKTOA,
|
|
) func(Option[HKTA]) HKTOA {
|
|
return Fold(F.Nullary2(None[A], _of), F.Bind2nd(_map, Some[A]))
|
|
}
|