Version franēaise
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Is it possible to implement this?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Jean-Christophe Filliatre <Jean-Christophe.Filliatre@l...>
Subject: Re: [Caml-list] Is it possible to implement this?

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