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

Reply via email to