From: Sam S. <sd...@gn...> - 2003-04-30 17:55:59
|
> * In message <160...@ho...> > * On the subject of "Re: [clisp-list] error or warning during compilation, yet some function is generat ed" > * Sent on Wed, 30 Apr 2003 18:55:43 +0200 (CEST) > * Honorable Bruno Haible <ha...@il...> writes: > > Sam writes: > > > > ; I.e. an error is reported, yet compilation continues, and returns a > > > weird function object: > > > > this appears to be the intended behavior in COMPILE-LAMBDA > > (compiler.lisp) > > I can easily disable it, but I would love to hear why Bruno introduced it. > > I don't see a good reason anymore not to give an > (sys::error-of-type 'sys::source-program-error ...) either this or just return nil, like we do now in other cases: [1]> (defun f () (let ((:f 0)) :f)) F [2]> (compile 'f) ERROR in F : Constant :F cannot be bound. NIL ; 1 ; 1 [3]> (setq f (lambda () (let ((:f 0)) :f))) #<CLOSURE :LAMBDA NIL (LET ((:F 0)) :F)> [6]> (compile nil f) ERROR : Constant :F cannot be bound. NIL ; 1 ; 1 returning NIL would violate the rule that (lambda ...) returns a function, so, I guess, an error is better. -- Sam Steingold (http://www.podval.org/~sds) running RedHat9 GNU/Linux <http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/> <http://www.mideasttruth.com/> <http://www.palestine-central.com/links.html> There is an exception to every rule, including this one. |