Free_monad.Make3
module F : Functor.S3
include Monad_let.S3 with type ('a, 'x, 'y) t := ( 'a, 'x, 'y ) t
include Monad_let.S_without_syntax3
with type ('a, 'd, 'e) t := ( 'a, 'd, 'e ) t
val return : 'a -> ( 'a, _, _ ) t
module Let_syntax : sig ... end