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