[Ecls-list] ContextL functions with &key args don't work properly in ECL.

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Sun Feb 28 21:02:09 UTC 2010


On Sun, Feb 28, 2010 at 9:40 PM, Pascal Costanza <pc at p-cos.net> wrote:
> I have looked further into this issue. The closures associated with methods
> should actually not have names (or their names should not be used for
> debugging). What should be printed is the name of the generic function they
> are contained in. The reason is that methods may be freely moved from one
> generic function to the next.

Right now no Common Lisp that I know fulfills your expectations, and
all of them use named lambdas for obvious (at least for implementors)
reasons: having return-from, optimized creation of the block, ... For
instance with SBCL:

* (bar 3 4)

debugger invoked on a DIVISION-BY-ZERO:
  arithmetic error DIVISION-BY-ZERO signalled
Operation was SB-KERNEL::DIVISION, operands (7 0).

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

(SB-KERNEL::INTEGER-/-INTEGER 7 0)
0] backtrace

0: (SB-KERNEL::INTEGER-/-INTEGER 7 0)
1: ((SB-PCL::FAST-METHOD FOO (T T))
    #<unavailable argument>
    #<unavailable argument>
    3
    4)
2: (SB-INT:SIMPLE-EVAL-IN-LEXENV (BAR 3 4) #<NULL-LEXENV>)
3: (INTERACTIVE-EVAL (BAR 3 4))[:EXTERNAL]
4: (SB-IMPL::REPL-FUN NIL)
5: ((LAMBDA ()))
6: (SB-IMPL::%WITH-REBOUND-IO-SYNTAX #<CLOSURE (LAMBDA #) {1198534D}>)
7: (SB-IMPL::TOPLEVEL-REPL NIL)
8: (SB-IMPL::TOPLEVEL-INIT)
9: ((LABELS SB-IMPL::RESTART-LISP))

-- 
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com




More information about the ecl-devel mailing list