Module type Alternative.CORE

Basis operations.

type 'a t

A type 'a t held by the Alt.

val combine : 'a t -> 'a t -> 'a t

Combine two values of t into one.

val neutral : 'a t

The neutral element of the Alternative.

inline

include Indexed_applicative.CORE with type ('a, _) t := 'a t
include Indexed_applicative.WITH_PURE with type ('a, 'index) t := 'a t
include Indexed_apply.WITH_APPLY with type ('a, 'index) t := 'a t
val apply : ('a -> 'b) t -> 'a t -> 'b t

May apply a function wrapped into an t to a value also wrapped into an t.

include Indexed_applicative.WITH_PURE with type ('a, 'index) t := 'a t
include Indexed_apply.WITH_MAP_AND_PRODUCT with type ('a, 'index) t := 'a t
include Indexed_functor.WITH_MAP with type ('a, 'index) t := 'a t
val map : ('a -> 'b) -> 'a t -> 'b t

Mapping over t from 'a to 'b.

include Indexed_apply.WITH_PRODUCT with type ('a, 'index) t := 'a t
val product : 'a t -> 'b t -> ('a * 'b) t

Monoidal product between two t.

include Indexed_applicative.WITH_PURE with type ('a, 'index) t := 'a t
val pure : 'a -> 'a t

Lift a value from 'a into a new t.

include Indexed_apply.WITH_LIFT2 with type ('a, 'index) t := 'a t
val lift2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

Lift a binary function that acts on arbitrary values into a function that acts t values.