diff --git a/src/libraries/monads/composition.ml b/src/libraries/monads/composition.ml index 0364320faffc7643d507c6a4ee6030f826eb544a..06a2eb82149151d1f5aaa5a44ec3b6819d973f85 100644 --- a/src/libraries/monads/composition.ml +++ b/src/libraries/monads/composition.ml @@ -29,20 +29,20 @@ module Make (Int : Monad.S) (Ext : Monad.S) (X : Axiom with type 'a interior = 'a Int.t and type 'a exterior = 'a Ext.t) -= Monad.Make_based_on_map (struct + = Monad.Make_based_on_map (struct type 'a t = 'a Int.t Ext.t let return x = Ext.return (Int.return x) let map f m = Ext.map (Int.map f) m let flatten m = Ext.map X.swap m |> Ext.flatten |> Ext.map Int.flatten -end) + end) module Make_with_product (Int : Monad.S_with_product) (Ext : Monad.S_with_product) (X : Axiom with type 'a interior = 'a Int.t and type 'a exterior = 'a Ext.t) -= Monad.Make_based_on_map_with_product (struct + = Monad.Make_based_on_map_with_product (struct type 'a t = 'a Int.t Ext.t let return x = Ext.return (Int.return x) let map f m = Ext.map (Int.map f) m let flatten m = Ext.map X.swap m |> Ext.flatten |> Ext.map Int.flatten let product l r = Ext.product l r |> Ext.map (fun (l, r) -> Int.product l r) -end) + end) diff --git a/src/libraries/monads/composition.mli b/src/libraries/monads/composition.mli index 33afc243e6f557372aab31cb03cb68d2587827c1..3c99b987cd5c0e772df05ca0922e926f5bd4256e 100644 --- a/src/libraries/monads/composition.mli +++ b/src/libraries/monads/composition.mli @@ -29,10 +29,10 @@ module Make (Int : Monad.S) (Ext : Monad.S) (_ : Axiom with type 'a interior = 'a Int.t and type 'a exterior = 'a Ext.t) -: Monad.S with type 'a t = 'a Int.t Ext.t + : Monad.S with type 'a t = 'a Int.t Ext.t module Make_with_product (Int : Monad.S_with_product) (Ext : Monad.S_with_product) (_ : Axiom with type 'a interior = 'a Int.t and type 'a exterior = 'a Ext.t) -: Monad.S_with_product with type 'a t = 'a Int.t Ext.t + : Monad.S_with_product with type 'a t = 'a Int.t Ext.t