Hi Jason, > Why does declaring a parameter named 'args', in a function that does > NOT use the '(args)' call, break things severely ? > > I had a function that does NOT use the built-in 'args, but which > declared a parameter named 'args : > ... > Then eventually 'fun calls a function that calls '(args) :
Well, this is easy ;) You did not follow the PicoLisp naming conventions. We should use an uppercase The Naming Conventions in https://software-lab.de/doc/ref.html#conv state: "Locally bound symbols start with an upper case letter". Also check the FAQ at https://software-lab.de/doc/faq.html#bind > I thought parameters and '(let ..) variables are in their own > dynamic lexical scope, so that even if the 'args call is hidden PicoLisp does dynamic BINDING. There is an ongoing confusion of terms: "Scope" means "visibility", but when we talk about the values of symbols it is "binding". Common Lisp for example does lexical binding, while PicoLisp does dynamic binding. The SCOPE of a symbol in PicoLisp depends on its type. Transient symbols have a file-local scope, internal symbols have a scope per namespace, an external symbol's scope is that of the database. But they are ALL bound dynamically. ☺/ A!ex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe