1. Dmitry Grebeniuk
  2. ocaml-logicm

Source

ocaml-logicm / logicM_common.ml

module type LogicM_type
 =
  sig
    type 'a m

    val mzero : 'a m
    val return : 'a -> 'a m

    val interleave : 'a m -> 'a m -> 'a m
    val ( <+> ) : 'a m -> 'a m -> 'a m

    val bind : 

    val ifm : 'a m -> ('a m -> 'b) -> 'b -> 'b

    val runL : int option -> 'a m -> 'a list

    val filter : ('a -> bool) -> 'a m -> 'a m

    val from_stream : 'a Stream.t -> 'a m
  end