[Haskell-cafe] Splitting Hairs Over Terminology
Brandon S. Allbery KF8NH
allbery at ece.cmu.edu
Mon Feb 26 23:08:53 EST 2007
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] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university KF8NH
More information about the Haskell-Cafe
mailing list