module type PT = sig end
module P = struct end
let () =
module Make(Hash: OrigHashtbl.HashedType) = struct
type 'a t
= { t_list
: (Hash
.t
* 'a
) list }
let create _ =
Format.printf
"Random %d@." random
; { t_list = [] }
let mem ht v =
Format.printf
"Random %d@." random
; List.mem_assoc v ht
.t_list
end
end
module Hash = struct
let equal x1 x2 = x1 = x2
let hash x = x
end
module Wrap(P: PT) = struct
end
module Wrap1 = Wrap(P)
module Wrap2 = Wrap(P)
module H1 = Wrap1.H
module H2 = Wrap2.H
let () =
let ht = H1.create 16 in
Format.printf
"%b@." (H2
.mem ht
0)
ICAgIG1vZHVsZSB0eXBlIFBUID0gc2lnIGVuZAogICAgbW9kdWxlIFAgPSBzdHJ1Y3QgZW5kCgogICAgbGV0ICgpID0KICAgICAgUmFuZG9tLnNlbGZfaW5pdCAoKQoKICAgIG1vZHVsZSBPcmlnSGFzaHRibCA9IEhhc2h0YmwKICAgIG1vZHVsZSBIYXNodGJsID0gc3RydWN0CiAgICAgIG1vZHVsZSBNYWtlKEhhc2g6IE9yaWdIYXNodGJsLkhhc2hlZFR5cGUpID0gc3RydWN0CiAgICAgICAgbGV0IHJhbmRvbSA9IFJhbmRvbS5pbnQgMTAwMDAwMAoKICAgICAgICB0eXBlICdhIHQgPSB7IHRfbGlzdDogKEhhc2gudCAqICdhKSBsaXN0IH0KCiAgICAgICAgbGV0IGNyZWF0ZSBfID0KICAgICAgICAgIEZvcm1hdC5wcmludGYgIlJhbmRvbSAlZEAuIiByYW5kb207CiAgICAgICAgICB7IHRfbGlzdCA9IFtdIH0gICAgICAgICAgCgogICAgICAgIGxldCBtZW0gaHQgdiA9CiAgICAgICAgICBGb3JtYXQucHJpbnRmICJSYW5kb20gJWRALiIgcmFuZG9tOwogICAgICAgICAgTGlzdC5tZW1fYXNzb2MgdiBodC50X2xpc3QgICAgICAgICAgCiAgICAgIGVuZAogICAgZW5kCgogICAgbW9kdWxlIEhhc2ggPSBzdHJ1Y3QKICAgICAgdHlwZSB0ID0gaW50CiAgICAgIGxldCBlcXVhbCB4MSB4MiA9IHgxID0geDIKICAgICAgbGV0IGhhc2ggeCA9IHgKICAgIGVuZAoKICAgIG1vZHVsZSBXcmFwKFA6IFBUKSA9IHN0cnVjdAogICAgICBtb2R1bGUgSCA9IEhhc2h0YmwuTWFrZShIYXNoKQogICAgZW5kCgogICAgbW9kdWxlIFdyYXAxID0gV3JhcChQKQogICAgbW9kdWxlIFdyYXAyID0gV3JhcChQKQogICAgbW9kdWxlIEgxID0gV3JhcDEuSAogICAgbW9kdWxlIEgyID0gV3JhcDIuSAoKICAgIGxldCAoKSA9CiAgICAgIGxldCBodCA9IEgxLmNyZWF0ZSAxNiBpbgogICAgICBGb3JtYXQucHJpbnRmICIlYkAuIiAoSDIubWVtIGh0IDAp