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

Reply via email to