Re: Wiki Article: Asynchronous Events and Family IPC

2022-05-07 Thread Jean-Christophe Helary
By the way, the picolisp twitter account is great !!! :-)

JC

> On May 8, 2022, at 14:08, Alexander Burger  wrote:
> 
> Hi all,
> 
> a new Wiki article about internal background processing, asynchronous events 
> and
> family IPC in PicoLisp:
> 
>   https://picolisp.com/wiki/?background
> 
> I think this was not yet documented anywhere.
> 
> ☺/ A!ex
> 
> -- 
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

-- 
Jean-Christophe Helary @brandelune
https://mac4translators.blogspot.com
https://sr.ht/~brandelune/omegat-as-a-book/


--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Wiki Article: Asynchronous Events and Family IPC

2022-05-07 Thread Alexander Burger
Hi all,

a new Wiki article about internal background processing, asynchronous events and
family IPC in PicoLisp:

   https://picolisp.com/wiki/?background

I think this was not yet documented anywhere.

☺/ A!ex

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: clarification on lexical scopes needed - why parameter name 'args breaks things?

2022-05-07 Thread Alexander Burger
On Sat, May 07, 2022 at 08:45:48PM +0200, Alexander Burger wrote:
> There is an ongoing confusion of terms: "Scope" means "visibility", but when 
> we
> talk about the values of symbols it is "binding".

We should really talk about this at the next PilCon (in three days).

☺/ A!ex

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: clarification on lexical scopes needed - why parameter name 'args breaks things?

2022-05-07 Thread Alexander Burger
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


clarification on lexical scopes needed - why parameter name 'args breaks things?

2022-05-07 Thread Jason Vas Dias
Good day Alex, picoLisp list -

  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 :

(de a ( fun data args )
 (let
  ( (flg list x) args ) # destructuring bind
  (prog ...
   # eventually, fun gets called with unpacked args:
   (fun data flg list x)
  )
 )
)

Then eventually 'fun calls a function that calls '(args) :
   '(request!
 '(+myDbCls) ...
)
which DOES use args, at which point I got an error:

!? ((0 NIL 16661165511231956559 (15935676839705835219
(12638994734423517827 ...
0 -- Variable expected

  Renaming the parameter 'ars (or 'as :-) ) fixed the problem.

  Why ?

  I thought parameters and '(let ..) variables are in their own
  dynamic lexical scope, so that even if the 'args call is hidden
  in the 'a function, if 'a calls another function 'fun, and that
  calls a function which calls 'request!, the binding of 'args
  in request cannot possibly be affected by the binding of 'args
  in 'a. This turns out to be incorrect ! Where am I going wrong ?

  This took me a LONG time to find. My only clue was that 'list does
  look like :
   ((0 NIL 16661165511231956559 (15935676839705835219 (12638994734423517827 ...

  Any suggestions as to exactly how the binding of 'args in 'a gets
  called by 'request! would be much appreciated.

Thank You & Best Regards,
Jason

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe