Working with ocaml's functional data structures has quickly become a job of connecting different functors together, and I'd appreciate some help.I have the following layout:module rec OrderedKey : OrderedKeyType = structtype t = Value.value_tlet compare = comparelet filter_idxs idxs = function| Value.VTuple l -> Value.VTuple(list_filter_idxs idxs l)| _ -> invalid_arg "not a vtuple"endand ValueBag : IBag.S with type elt = Value.value_t =IBag.Make(OrderedKey)and ValueMMap : IMultimap.S with type elt = Value.value_t and type bag = ValueBag.t =IMultimap.Make(OrderedKey)and Value : sig ... type value_t = ... end = ValueThe situation is as such: my multimap (IMultimap) contains an internal specialization of the IBag functor called an InnerBag. It attempts to return said bag, which is equivalent to the external ValueBag in structure. However, I don't know how to tell ocaml that the type 'bag' which is abstract in IMultimap is exactly the same as the external ValueBag. I tried to do that above, but what I get is a mismatch between IMultimap's internal InnerBag.t and the external ValueBag.t.Any help would be appreciated.Yotam