Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
* [Caml-list] Representation of anonymous recursive types
@ 2002-04-18 10:17 John Max Skaller
  0 siblings, 0 replies; only message in thread
From: John Max Skaller @ 2002-04-18 10:17 UTC (permalink / raw)
  To: caml-list

What is a good way to represent an anonymous recursive type
so that they can be easily compared for equality?

Felix currently supports recursion, but only for generative types,
that is, ones for which there is an entry into a symbol table.
Binding the type then replaces the name with the symbol
table index.

This cannot work for an anonymous type, unless of course
a secret entry is made in the symbol table, and that would
fail to correctly support type comparisons.

I'm thinking of something like:

  type texpr = [ ....
   | `Rec int
   | `As int * texpr]

where the argument of `Rec indicates the containing `As term with
the same index. I think this means that the standard Ocaml
comparison <> will correctly test equality.

Example:

   (Cons of int * 'a | Empty) as 'a

is modelled by:

   `As (1, `Sum [`Nctor ("Cons", `Prod [`Int; `Rec 1]); `Cctor "Empty"])

For uniqueness, the index has to be 1 for inner most recursion,
2 for next outer one, etc.

-- 
John Max Skaller, mailto:skaller@ozemail.com.au
snail:10/1 Toxteth Rd, Glebe, NSW 2037, Australia.
voice:61-2-9660-0850



-------------------
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] only message in thread

only message in thread, other threads:[~2002-04-18 10:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-18 10:17 [Caml-list] Representation of anonymous recursive types John Max Skaller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox