package monads

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Result.Make

Make(E)(M) concretized the type of error to E.t and composes the Result monad with the monad M.

Parameters

module T : Core_kernel.T
module M : Monad

Signature

include Trans.S with type 'a t := 'a T1(T)(M).t with type 'a m := 'a T1(T)(M).m with type 'a e := 'a T1(T)(M).e
val lift : 'a T1(T)(M).m -> 'a T1(T)(M).t

lifts inner monad into the resulting monad

val run : 'a T1(T)(M).t -> 'a T1(T)(M).e

runs the computation

include Monad with type 'a t := 'a T1(T)(M).t
val void : 'a T1(T)(M).t -> unit T1(T)(M).t

void m computes m and discrards the result.

val sequence : unit T1(T)(M).t list -> unit T1(T)(M).t

sequence xs computes a sequence of computations xs in the left to right order.

val forever : 'a T1(T)(M).t -> 'b T1(T)(M).t

forever xs creates a computationt that never returns.

module Fn : sig ... end

Various function combinators lifted into the Kleisli category.

module Pair : sig ... end

The pair interface lifted into the monad.

module Triple : sig ... end

The triple interface lifted into a monad.

module Lift : sig ... end

Lifts functions into the monad.

module Exn : sig ... end

Interacting between monads and language exceptions

module Collection : sig ... end

Lifts collection interface into the monad.

module List : Collection.S with type 'a t := 'a list

The Monad.Collection.S interface for lists

module Seq : Collection.S with type 'a t := 'a Core_kernel.Sequence.t

The Monad.Collection.S interface for sequences

include Syntax.S with type 'a t := 'a T1(T)(M).t
val (>=>) : ('a -> 'b T1(T)(M).t) -> ('b -> 'c T1(T)(M).t) -> 'a -> 'c T1(T)(M).t

f >=> g is fun x -> f x >>= g

val (!!) : 'a -> 'a T1(T)(M).t

!!x is return x

val (!$) : ('a -> 'b) -> 'a T1(T)(M).t -> 'b T1(T)(M).t

!$f is Lift.unary f

val (!$$) : ('a -> 'b -> 'c) -> 'a T1(T)(M).t -> 'b T1(T)(M).t -> 'c T1(T)(M).t

!$$f is Lift.binary f

val (!$$$) : ('a -> 'b -> 'c -> 'd) -> 'a T1(T)(M).t -> 'b T1(T)(M).t -> 'c T1(T)(M).t -> 'd T1(T)(M).t

!$$$f is Lift.ternary f

val (!$$$$) : ('a -> 'b -> 'c -> 'd -> 'e) -> 'a T1(T)(M).t -> 'b T1(T)(M).t -> 'c T1(T)(M).t -> 'd T1(T)(M).t -> 'e T1(T)(M).t

!$$$$f is Lift.quaternary f

val (!$$$$$) : ('a -> 'b -> 'c -> 'd -> 'e -> 'f) -> 'a T1(T)(M).t -> 'b T1(T)(M).t -> 'c T1(T)(M).t -> 'd T1(T)(M).t -> 'e T1(T)(M).t -> 'f T1(T)(M).t

!$$$$$f is Lift.quinary f

include Syntax.Let.S with type 'a t := 'a T1(T)(M).t
val (let*) : 'a T1(T)(M).t -> ('a -> 'b T1(T)(M).t) -> 'b T1(T)(M).t

let* r = f x in b is f x >>= fun r -> b

val (and*) : 'a T1(T)(M).t -> 'b T1(T)(M).t -> ('a * 'b) T1(T)(M).t

monoidal product

val (let+) : 'a T1(T)(M).t -> ('a -> 'b) -> 'b T1(T)(M).t

let+ r = f x in b is f x >>| fun r -> b

val (and+) : 'a T1(T)(M).t -> 'b T1(T)(M).t -> ('a * 'b) T1(T)(M).t

monoidal product

include Core_kernel.Monad.S with type 'a t := 'a T1(T)(M).t
val (>>=) : 'a T1(T)(M).t -> ('a -> 'b T1(T)(M).t) -> 'b T1(T)(M).t
val (>>|) : 'a T1(T)(M).t -> ('a -> 'b) -> 'b T1(T)(M).t
module Monad_infix : sig ... end
val bind : 'a T1(T)(M).t -> f:('a -> 'b T1(T)(M).t) -> 'b T1(T)(M).t
val return : 'a -> 'a T1(T)(M).t
val map : 'a T1(T)(M).t -> f:('a -> 'b) -> 'b T1(T)(M).t
val join : 'a T1(T)(M).t T1(T)(M).t -> 'a T1(T)(M).t
val ignore_m : 'a T1(T)(M).t -> unit T1(T)(M).t
val all : 'a T1(T)(M).t list -> 'a list T1(T)(M).t
val all_unit : unit T1(T)(M).t list -> unit T1(T)(M).t
module Let_syntax : sig ... end
module Let : Syntax.Let.S with type 'a t := 'a T1(T)(M).t

Monadic operators, see Monad.Syntax.S for more.

module Syntax : Syntax.S with type 'a t := 'a T1(T)(M).t

Monadic operators, see Monad.Syntax.S for more.

include Fail.S with type 'a t := 'a T1(T)(M).t with type 'a error = T.t
type 'a error = T.t

a type of error

val fail : _ error -> 'a T1(T)(M).t

fail err diverges the computation, possibly providing an extra information in a value of type _ error.

val catch : 'a T1(T)(M).t -> (_ error -> 'a T1(T)(M).t) -> 'a T1(T)(M).t

catch m f if m diverges with some bottom value err, the f err is a result of the whole computation, otherwise returns m.

OCaml

Innovation. Community. Security.