Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: wheels within wheels



On 09/29/2015 08:40 PM, Bart Schaefer wrote:
}
} I just learned that it's possible to declare a function within another
} function.  A strange liberty.

Interpreted language.

Yes.  It's so easy to forget that.
     function foo {
       echo defining bar
       function bar {
	echo hello from bar
       }
       echo redefining foo
       function foo {
	echo hello from new foo
	bar
       }
       # this looks like infinite recursion,
       # but it is not, because foo was redefined
       foo
     }


Now that is mind expanding. If you tried that in C you'd collapse the universe. Interpreted .... sure, it can saw off the branch it's sitting on because there is no tree. Each command is past when it's past so that must mean that the address of first foo ... is there ... yes of course there is, the thing is in memory ... just aborts when second foo comes along. It will expect grammatical completion of first foo for the sake of etiquette. And when foo calls itself, it calls new foo which is not recursive. I am not yet able to snatch the pebble out of your hand, but that's
a zsh koan.



Messages sorted by: Reverse Date, Date, Thread, Author