Or you can also functorize your own piece of code :

module Make (A : sig type t end) =
struct

    module rec H :
    sig
        type 'a node =
            | Node of 'a node J.t
            | Leaf of 'a
                 
        type t = A.t node
        val equal : t -> t -> bool
        val hash : t -> int
    end =
    struct
        type 'a node =
            | Node of 'a node J.t
            | Leaf of 'a
                 
        type t = A.t node
        let equal = (==)
        let hash = Hashtbl.hash
    end
       
    and J : Hashtbl.S with type key = A.t H.node = Hashtbl.Make( H )
   
end

2009/1/20 Hugo Ferreira <hmf@inescporto.pt>
David Teller wrote:
It's probably feasible without copy & paste by building a functor on top
of the defunctorized hashtable in Batteries. Or by just using the
defunctorized hashtable of Batteries directly, although it's not as safe
as the functorized version, due to the absence of existential types.


If I understand you correctly I would have to redefine equivalents for:
- HashedType
- S
- Make(H: HashedType)

Basically copy & paste these and change the type.
Doable although not to my liking.

TIA,
Hugo F.



Cheers,
 David

On Tue, 2009-01-20 at 12:24 +0100, Daniel Bünzli wrote:
Le 20 janv. 09 à 11:59, Hugo Ferreira a écrit :

Is it possible to make H comply with Hashtbl.HashedType i.e: make
J.Key = 'a H.node ?
This issue is well known (e.g. see here [1]). Your are running into  limitations of the standard library. The only unsatisfying answer is  to copy the code from the standard library and add the parameter  yourself.

Best,

Daniel

[1] http://groups.google.com/group/fa.caml/browse_thread/thread/f2acb593da91553c?hl=fr&ie=UTF-8&q=type+var+in+functor+fa.caml

____________________________________________ugs


_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs