verified that LAMBDA-NAME isn't just for debugging, but can
break the compiler, too:-(
(bar x)))
shouldn't compile without error (because of the extra DEFMACRO symbol).
(bar x)))
shouldn't compile without error (because of the extra DEFMACRO symbol).
+130:
+ reported by Alexey Dejneka on sbcl-devel 2001-11-03
+ (defun x (x)
+ "Return X if X is a non-negative integer."
+ (let ((step (lambda (%funcall)
+ (lambda (n)
+ (cond ((= n 0) 0)
+ (t (1+ (funcall %funcall (1- n)))))))))
+ (funcall
+ ((lambda (a)
+ (funcall step (lambda (n)
+ (funcall (funcall a a) n))))
+ (lambda (a)
+ (funcall step (lambda (n)
+ (funcall (funcall a a) n)))))
+ x)))
+ This function returns its argument. But after removing percents it
+ does not work: "Result of (1- n) is not a function".
+
+
KNOWN BUGS RELATED TO THE IR1 INTERPRETER
(Now that the IR1 interpreter has gone away, these should be
KNOWN BUGS RELATED TO THE IR1 INTERPRETER
(Now that the IR1 interpreter has gone away, these should be
(format nil "~S initial component" name))
(setf (component-kind component) :initial)
(let* ((locall-fun (ir1-convert-lambda definition
(format nil "~S initial component" name))
(setf (component-kind component) :initial)
(let* ((locall-fun (ir1-convert-lambda definition
- (format nil "locall ~S" name)))
+ (let ((*package* *keyword-package*))
+ (format nil "locall ~S" name))))
(fun (ir1-convert-lambda (make-xep-lambda locall-fun) name)))
(setf (functional-entry-function fun) locall-fun
(functional-kind fun) :external
(fun (ir1-convert-lambda (make-xep-lambda locall-fun) name)))
(setf (functional-entry-function fun) locall-fun
(functional-kind fun) :external
;; GLOBAL-VAR, this is the symbol name of the variable. In a
;; functional that is from a DEFUN, this is the defined name. In
;; other functionals, this is a descriptive string.
;; GLOBAL-VAR, this is the symbol name of the variable. In a
;; functional that is from a DEFUN, this is the defined name. In
;; other functionals, this is a descriptive string.
+ ;;
+ ;; KLUDGE: Note that at least for LAMBDA-VARs, this is important not
+ ;; just for debugging but for ordinary compilation as well. In
+ ;; particular, in RECOGNIZE-KNOWN-CALL function calls are compiled
+ ;; differently based on the LEAF-NAME.
(name nil :type t)
;; the type which values of this leaf must have
(type *universal-type* :type ctype)
(name nil :type t)
;; the type which values of this leaf must have
(type *universal-type* :type ctype)
;;; for internal versions, especially for internal versions off the
;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
;;; for internal versions, especially for internal versions off the
;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)