[EMAIL PROTECTED] wrote:
"properly tail recursive" (Is there such thing as improperly tail recursive?)
Yes. Some systems can only do a tail call optimization when the tail
recursion calls itself. So, function a is tail call optimized only when
the tail call is another call to function a but not when the tail call
goes to another function b and then comes back to a.
The reason self-referencing tail calls are easier is that you can just
push all the local values directly back into the local stack frame.
"statically scoped" (Scope to me just means the parens in which a bound symbol
is valid. What's with the 'static' part?)
GIMF
http://coding.derkeiler.com/Archive/Lisp/comp.lang.lisp/2006-10/msg00718.html
"[Scheme is] one of first programming languages to incorporate first class
procedures as in the lambda calculus" (Huh? Lisp had first class *functions* a
long time ago. Does procedure != function?)
So did Scheme. Scheme is from 1975 or so.
"first class procedures" can mean many things. However, Scheme is a
Lisp-1, so functions are Just Another Chunk Of Data(tm) whereas Common
Lisp is a Lisp-2 and has special methods for crossing the data/function
namespaces.
I believe that the whole functions as first-class objects took quite a
while to work out. Probably because of bad scoping decisions. IIRC,
Scheme was one of the first languages to implement full lexical scoping
instead of dynamic scoping.
"first class escape procedures from which all previously known sequential
control structures can by synthesized." (I don't even have a clue for this
one.)
Continuations combined with closures.
-a
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg