* [Caml-list] how to open types
@ 2002-11-04 8:25 pan deng
2002-11-04 12:41 ` Olivier Andrieu
0 siblings, 1 reply; 2+ messages in thread
From: pan deng @ 2002-11-04 8:25 UTC (permalink / raw)
To: caml-list
I want to use hashtable on my objects which all has a
method get_string:string.
but i can only write the code like these:
module SeqHashType =
struct
type t= <get_string:string >
let equal s1 s2 = (String.uppercase s1#get_string
=String.uppercase s2#get_string )
let hash s = Strex.hash s#get_string
end
module SeqHashtbl = Hashtbl.Make (SeqHashType)
surely it is not what i want . i have tried
type t= <get_string:string ; ..>
but i can not complie it , the complier says Unbound
..
then how to open the type <get_string:string> in the
module SeqHashType ?
or it can not be opened at this situation ?
i am a newbie and a little puzzled at open types.
__________________________________________________
Do you Yahoo!?
HotJobs - Search new jobs daily now
http://hotjobs.yahoo.com/
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Caml-list] how to open types
2002-11-04 8:25 [Caml-list] how to open types pan deng
@ 2002-11-04 12:41 ` Olivier Andrieu
0 siblings, 0 replies; 2+ messages in thread
From: Olivier Andrieu @ 2002-11-04 12:41 UTC (permalink / raw)
To: pan deng; +Cc: caml-list
pan deng [Monday 4 November 2002] :
>
> I want to use hashtable on my objects which all has a
> method get_string:string.
> but i can only write the code like these:
>
> module SeqHashType =
> struct
> type t= <get_string:string >
> let equal s1 s2 = (String.uppercase s1#get_string
> =String.uppercase s2#get_string )
> let hash s = Strex.hash s#get_string
> end
> module SeqHashtbl = Hashtbl.Make (SeqHashType)
>
> surely it is not what i want . i have tried
> type t= <get_string:string ; ..>
>
> but i can not complie it , the complier says Unbound
> ..
Yes, "open" object type have an implicit type parameter that you have
to specify in the definition :
type 'a t = 'a constraint <get_string: string; ..>
> then how to open the type <get_string:string> in the
> module SeqHashType ?
> or it can not be opened at this situation ?
You cannot because in the module signature Hashtbl.HashedType, type t
isn't polymorph.
I guess the solution would be to use
type t = <get_string:string>
and to coerce your objects to this
(o :> SeqHashType.t)
--
Olivier
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2002-11-04 12:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-04 8:25 [Caml-list] how to open types pan deng
2002-11-04 12:41 ` Olivier Andrieu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).