Loop is now as you suggested, same problem :
(let ( ... r NIL)
...
(for r (idx ratr)
(when (and (bool r) (lst? r))
(let
( (k . v) r )
(case k
(( "dst" "gateway" "dev" "metric" ))
(T
(out 1 (prin (pack k ":" v "^I")))
)
)
)
)
)
...)
So '(let ( ( k . v ) l ) ...)' copies CONS cell in l, while
'(let ( ( k v ) l ) ... )' sets k & v to (car l) and (cadr l)
respectively,
right ?
That is cool.
I will try printing all symbols from the program in debug mode and
comparing with all symbols in non-debug mode .
Why though when run under Emacs in an Emacs terminal , or with '+'
debug mode option, no warnings or coredumps or errors occur
(since we are in Debug Mode), that in itself is a bug in the Debugger
if some major re-naming has occurred - it should message about
'Redefining Symbols' , no ? It doesn't :
: (load "/home/jvd/J/L_RT.l")
# pil_inc redefined
# load-routes redefined
# prin_route redefined
-> NIL
:
(this was because I had a previous version loaded).
You'd hope , when running with debug enabled in an Emacs terminal, that
any redefinition of a core built-in symbol would be warned about, no?
So yes, I think picolisp definitely needs ability to control both
GDB and pil debugger driver Emacs sessions for the same process
to enable investigating situations such as this - one needs to be
able to inspect the picoLisp Stack in Emacs and see which Variables
/ symbols / strings / numbers / external symbols & in each environment
they refer to - this is not trivial, but is what is needed, and is what eg