let to_int m =
let module M = (val m : X_int) in
M.x
Except yours will look more like:
let find h ht x =let module H = (val h : Hashtbl.S) inH.find ht x
Sorry about the awful formatting.
Hi all,Considering this functionlet find ht x =Hashtbl.find ht x
I would like to write a more general `find` function which takes the moduleas first class module in parameter with the possibility to use it ondifferent implentations of Hashtbl.S.let find (module H : Hashtbl.S) ht x =H.find ht xbut it failed with this error (on the underlined identifier) :Error: This expression has type 'a H.t but an expression was expected of type'a H.tThe type constructor H.t would escape its scopeI also tried by specifying the implementation but had the same problem:let find (type a) (module H : Hashtbl.S with type key = a) (ht : 'a Ht.t) (x : a) =H.find ht xAnyone has an idea how to achieve this thing ?Thanks,- Rémy El Sibaïe, LIP6PS: at the begining, I was trying on a memoization function which has more interest than the previous function :let memo_rec (module H : Hashtbl.S) h f =let rec g x =try H.find h x with| Not_found ->let y = f g x inH.add h x y; yin g