From: skaller <skaller@users.sourceforge.net>
To: Till Varoquaux <till.varoquaux@gmail.com>
Cc: David Teller <David.Teller@univ-orleans.fr>, OCaml <caml-list@inria.fr>
Subject: Re: [Caml-list] Labelling trees
Date: Fri, 08 Jun 2007 09:09:17 +1000 [thread overview]
Message-ID: <1181257757.15201.27.camel@rosella.wigram> (raw)
In-Reply-To: <9d3ec8300706070726o3ed62650ob73c832fdfa92617@mail.gmail.com>
On Thu, 2007-06-07 at 16:26 +0200, Till Varoquaux wrote:
> Hashtbl don't require ordering they require hashing.
True, but the hash required would be unstable.
> Anyways I'm
> pretty sure both the functions `Pervasives.compare` and `Hashtbl.hash`
> actually work on the representation of the data,
Yes, which is why you can't use them. The idea is:
map1: address1 -> AST
map2: address1 -> decoration
where address1 is the address of the AST term. map1 is just the
function:
let id x = x
map2 can be an association list, searching by address.
Hashing or comparing using the value of a term as a key
is no good. It's too slow.
> > Double indirection works though: instead of terms, use an integer
> > which Maps to a term .. you can then also Map the integer to
> > your type. Of course .. this isn't statically safe.
>
> Huh????
The Felix compiler maps like:
int -> term
int -> decoration
This isn't statically safe. There's no assurance of a 1-1 correspondence
between terms and decorations.
The encoding is safe .. the semantics aren't. I use Hashtbl for this
and I get 'Not_found' exception regularly. Correctness here depends
on control flow -- dynamically maintaining the correspondence.
--
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net
next prev parent reply other threads:[~2007-06-07 23:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-06 19:43 David Teller
2007-06-06 21:22 ` [Caml-list] " Christophe Raffalli
2007-06-07 1:00 ` skaller
2007-06-07 14:26 ` Till Varoquaux
2007-06-07 23:09 ` skaller [this message]
2007-06-08 9:52 ` Till Varoquaux
2007-06-08 10:32 ` skaller
2007-06-07 14:25 ` Christian Stork
2007-06-07 23:48 ` Jeremy Yallop
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1181257757.15201.27.camel@rosella.wigram \
--to=skaller@users.sourceforge.net \
--cc=David.Teller@univ-orleans.fr \
--cc=caml-list@inria.fr \
--cc=till.varoquaux@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox