From: Nikodemus S. <nik...@ra...> - 2007-09-07 17:50:39
|
On 9/7/07, Nick Allen <nal...@gm...> wrote: > What are the chances of SB-EXT::NAMED-LAMBDA ever turning into > SB-EXT:NAMED-LAMBDA? opinions? comments? Weak, I think. What's wrong with the portable version? (Only difference is that ((named-lambda foo (x) ...) ...) is not legal with the portable version, but the benefit is that code walkers don't need to treat is specially.) (defmacro named-lambda (name lambda-list &body body) `(labels ((,name ,lambda-list ,@body)) #',name)) (funcall (named-lambda foo (x) (if (zerop x) x (/ x (foo (- x 1))))) 3) -> arithmetic error DIVISION-BY-ZERO signalled Operation was SB-KERNEL::DIVISION, operands (1 0). [Condition of type DIVISION-BY-ZERO] Restarts: 0: [ABORT] Return to SLIME's top level. 1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" {B374961}>) Backtrace: 0: (SB-KERNEL::INTEGER-/-INTEGER 1 0) 1: ((LABELS FOO) 1) 2: ((LABELS FOO) 2) 3: ((LABELS FOO) 3) 4: ((LABELS FOO) 3) Cheers, -- Nikodemus |