Quoting Ronald Reynolds <[email protected]>:
I hope I'm not too much of a 'pain in the neck noobie' but what is
the short clean answer about what's going on when we
name a function as part of the definition of itself.. This seems
pretty esoteric to me. What does the system do?
I'm not sure what you mean by "when we name a function as part of the
definition of itself," but since the title of your question is
"recursion," I'll just answer as if you had asked "when we write a
function that recursively calls itself," hoping that that's what you
meant...
Best place would be to study the documentation for letrec:
"Similar to let, but the locations for all ids are created first and
filled with #<undefined>, and all ids are bound in all val-exprs as
well as the bodys. "
I believe this pretty much explains it? It's mostly about scoping and
name spaces which are really fundamental concepts within Scheme, so
it's worth looking into those concepts a little bit more in depth.
In the case of #define, the global name space is used which the body
of the function can always access.
____________________
Racket Users list:
http://lists.racket-lang.org/users