Does that imply that lists are a special form of a tuple in Oz - a tuple
with a null in the last cell? Pretty nifty if that is the case!
Thanks,
Chris
Maximilian Wilson wrote:
On 3/4/06, Chris Rathman <[EMAIL PROTECTED]> wrote:
Spoke too soon - scratch that about ML. That's not the way it works.
X::Y only works if Y is a list. You'd have to write 1::2::nil. (1::2
won't compile).
Which leaves me with the question: If 1|2 is not a list of [1 2], then
what is it?
It's an "improper list," or something which has the recursive form of
a list but doesn't end in the right base case 2 | nil. However, [1 2]
is equivalent to 1 | [2].
You asked how to construct tuples: in Oz, a tuple is any record with
no explicitly-enumerated features. (Approximately.) So foo(1 2 3 4) is
a four-tuple, and so is bar(5 6 7 8) and qxy(a b c d). The '|'
operator constructs 2-tuples, and just assigns them the label '|'. So
1|2 is a 2-tuple '|'(1 2). If you want to construct bigger tuples,
either make up a label foo(a b c) or use the mixfix operator '#'. For
instance, 1#2#3 constructs a tuple '#'(1 2 3).
Max
--
Be pretty if you are,
Be witty if you can,
But be cheerful if it kills you.
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users