Lang.Monadic_Arity
type 'a m
val return : 'a -> 'a m
val bind : 'a m -> ('a -> 'b m) -> 'b m
type 'r ar0 = 'r m
type ('a, 'r) ar1 = 'a -> 'r m
type ('a, 'b, 'r) ar2 = 'a -> 'b -> 'r m
type ('a, 'b, 'c, 'r) ar3 = 'a -> 'b -> 'c -> 'r m
type ('a, 'r) variadic = 'a list -> 'r m