P. R. Stanley wrote:
You know, as soon as I posted the message I remembered the destructive
assignment thingummy. the following is what I was talking about:
Prelude> 13:[1, 2]
[13, 1, 2]
which I don't believe has an address in the memory, correct?
No. It does have a well-defined address in memory, which is there as
long as you need it (and then garbage-collected away sometime thereafter).
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.
The ":" is actually a constructor, which is a function that is fully
evaluated at compile time and on which you can do pattern matching. The
list syntax also forms such a pattern.
In C, for example, iteration could be implemented using the if construct
with the dreaded goto command. So, strictly speaking, the while loop
could be classed as syntax sugar. Yet, the while loop is a
well-recognized construct in its own right.
I hope you can see what I'm driving at.
Syntactic sugar is fully desugared at compile time. A while loop with
constant limits *could* be considered syntactic sugar if the compiler
can statically unroll the loop. Variable limits are definitely beyond
this definition, since they can only be evaluated at runtime.
Dan Weston
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe