On 12/26/12 11:34 AM, Russel Winder wrote:
On Wed, 2012-12-26 at 11:03 -0500, Andrei Alexandrescu wrote:
On 12/26/12 9:42 AM, Russel Winder wrote:
[…]
Does D do tail recursion optimisation?

Yah, but not tail calls. (That should be on the list...)

I'll have to admit confusion from the above statement: tail calls are a
programmer technique, tail call optimization is a compiler / run time
technique.  If a programmer uses tail calls and the compiler realizes
tail call optimization then the result is equivalent to iteration.

A few rough definitions:

Tail recursion: the last evaluation performed in a branch of a function is a call to itself.

Tail recursion optimization: replace tail recursion with a GOTO the entry point of the function.

Tail call: the last evaluation performed in a branch of a function is a call to another function.

Tail call optimization: replace tail call with a GOTO the entry point of the called function.

Can the D compiler check to enforce *NO* (or at the worst single)
assignment to a variable?

Only for immutable data.

But isn't that the whole point, in functional programming there is only
immutable data.  Thus a programming language that allows mutable data
cannot really be said to be usable for functional programming style.

Yah, that's the whole point so we're in good shape there.

On the other hand it is 2012-12-26T16:32 and nearly time for fireworks,
and drinkies. Hopefully everyone is having a peaceful and happy
Solstice/Xmas/New Year/Hogmanay/<insert your personal choice of excuse
for celebration>.

Same to all from yours truly!


Andrei

Reply via email to