On Feb 26, 2007, at 22:17 , P. R. Stanley wrote:
Prelude> 13:[1, 2]
[13, 1, 2]
which I don't believe has an address in the memory, correct?
If I understand what you're getting at: internally it just allocates
a new cons cell, stuffs 13 in the left side and a pointer to the
existing list [1, 2] in the right side, yes.
Back to the comma, surely, syntax sugar fulfills the role of an
operator, a function, or a sequence of low-level procedures, either
in part or comprehensively.
I suppose I'd have to go with the latter. In the formal constructor
syntax (,,) it's just part of the operator name, but the tuple
constructors are unique in that they don't need to be predeclared ---
Haskell just looks for a parenthesized series of commas and counts
the commas to find out the size of the tuple. (Note that the unit
type () falls out of this as a degenerate case.) (1, 2, 3) is
internally rewritten to (,,) 1 2 3, then parsed as the tuple
constructor (,,) applied to the three arguments that constructor
requires:
Prelude> :kind (,,)
(,,) :: * -> * -> * -> *
Prelude> :type (,,)
(,,) :: a -> b -> c -> (a, b, c)
My point is that, syntactically, the comma can't really be considered
a function or an operator per se; it's just special syntax.
--
brandon s. allbery [linux,solaris,freebsd,perl] [EMAIL PROTECTED]
system administrator [openafs,heimdal,too many hats] [EMAIL PROTECTED]
electrical and computer engineering, carnegie mellon university KF8NH
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe