Well, the difference is that a local variable (by which I really mean a formal argument to a function) can not be defined recursively in terms of itself.
But in your case it is through aliasing. Since x ends up being the function itself after one step in the recursion, the function is in fact defined in terms of itself.
As far as I can tell, all that fancy stuff is just different way of doing naming.
/ Fredrik (Naranek) Hubinette (Real Build Master)
Previous text:
2003-10-07 00:12: Subject: Re: Some tasks from the conference
Well, the difference is that a local variable (by which I really mean a formal argument to a function) can not be defined recursively in terms of itself.
Local (function) definitions in pike are more powerful, just like ordinary recursive functions. It seems recursive definitions of variables won't work, though, like
array foo = ({ 1, foo });
That's unlike C, where you can at least do things like
struct foo { struct foo *p; } bar = { &bar };
/ Niels Möller (igelkottsräddare)