Module type Let.S2

type ('a, 'e) t
val let* : ('a, 'e) t -> ('a -> ('b, 'e) t) -> ('b, 'e) t

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

val and* : ('a, 'e) t -> ('b, 'e) t -> ('a * 'b, 'e) t

monoidal product

val let+ : ('a, 'e) t -> ('a -> 'b) -> ('b, 'e) t

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

val and+ : ('a, 'e) t -> ('b, 'e) t -> ('a * 'b, 'e) t

monoidal product