caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Is it possible to implement this?
@ 2002-11-20  6:16 Lukasz Lew
  2002-11-20  7:45 ` Jean-Christophe Filliatre
  0 siblings, 1 reply; 2+ messages in thread
From: Lukasz Lew @ 2002-11-20  6:16 UTC (permalink / raw)
  To: caml-list


Let's suppose wy have module with such interface

module X =
 type t (*big data structure*)

 add : string -> t
 delete : t -> ()

And in the other module i keep X.t list, and i want to keep with each of 
them additional data of unknown type [at time of X compilation]

One solution is to have a hash from t to additional data in 
external module, but this would be slow, because of size of t.

Other is to keep with every t int identifier as small as possible, to keep
additional data in array, but this solution isn't very good.

Any ideas?
Lukasz Lew

-------------------
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] Is it possible to implement this?
  2002-11-20  6:16 [Caml-list] Is it possible to implement this? Lukasz Lew
@ 2002-11-20  7:45 ` Jean-Christophe Filliatre
  0 siblings, 0 replies; 2+ messages in thread
From: Jean-Christophe Filliatre @ 2002-11-20  7:45 UTC (permalink / raw)
  To: Lukasz Lew; +Cc: caml-list


Lukasz Lew writes:
 > 
 > Let's suppose wy have module with such interface
 > 
 > module X =
 >  type t (*big data structure*)
 > 
 >  add : string -> t
 >  delete : t -> ()
 > 
 > And in the other module i keep X.t list, and i want to keep with each of 
 > them additional data of unknown type [at time of X compilation]

You could  have a polymorphic  type "'a X.t"  where 'a stands  for the
type of the  associated data, and provide functions  "add_info : 'a ->
'a t -> unit" and "get_info : 'a t -> 'a" in module X.

 > Other is to keep with every t int identifier as small as possible, to keep
 > additional data in array, but this solution isn't very good.

Following this  kind of  idea, you could  do hash-consing of  your X.t
values, so that  they are allocated only once; doing  this, it is easy
to associate a  unique integer to each value in  X.t, which will allow
you to build an efficient map over X.t.

I already wrote an hash-consing module, available here:
http://www.lri.fr/~filliatr/software.en.html

(By  the way,  doing hash-consing  has many  other advantages  such as
saving space, providing O(1) equality, ...)

Hope this helps,
-- 
Jean-Christophe Filliâtre

-------------------
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-20  7:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-20  6:16 [Caml-list] Is it possible to implement this? Lukasz Lew
2002-11-20  7:45 ` Jean-Christophe Filliatre

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).