Browse thread
[Caml-list] Design advice
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Chris Hecker <checker@d...> |
| Subject: | Re: [Caml-list] Design advice |
> type card = Number of int | Jack | Queen | King | Ace
On a related note, for Xavier et al., why wasn't Number's field 0 assigned
to the same counter as the int of the non-argument constructors? In other
words, why isn't there a single incrementing int id from left to right,
regardless of arguments? That would have made algorithmic manipulations on
variants easier, because then you just have:
let card_to_int (c : card) : int =
let r = Obj.repr c in
if Obj.is_int r then Obj.magic c else Obj.obj (Obj.field r 0);;
I don't think it's possible to write card_to_int the way the compiler
currently works. If there was a card_cardinality (!) function then you
could do that + field 0 and the argument constructors would start at the
end (still not as nice as if they were in the source code order, but better
than nothing). Maybe you can write that with camlp4 (of course, with
camlp4 you can probably just write the longhand match-with form, but if
you're doing this a lot I'd assume match-with would be slower than just
fetching the field).
Chris
-------------------
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