On Mon, 28 May 2007, Waldek Hebisch wrote:

[...]

| The problem is more subtle: the code above (printed by sbcl)
| references |#1|.  Apparently sbcl complier does not see that
| |#1| is defined, but it is.  
| 
| In more detail, Axiom uses Lisp eval to replace |#1| by aproproate
| value.  Relevant part of backtrace is:
| 
| 17: (SB-INT:SIMPLE-EVAL-IN-LEXENV (EQCAR |#1| 0) #<NULL-LEXENV>)
| 18: (|evalSharpOne|
|      (EQCAR |#1| 0)
|      (0 (1 #(#(|cos| 1 (#)) ((# 0 . 1)) 2 4864) (1 0 . -1)) 0 . 1))
| 19: (|coerceUnion2Branch|
|      ((|Union| (|Expression| (|Integer|)) (|List| (|Expression| (|Integer|))))
|       WRAPPED 0 (1 #(#(|cos| 1 (#)) ((# 0 . 1)) 2 4864) (1 0 . -1)) 0 . 1))
| 
| 
| |evalSharpOne| is defined as:
| 
| (defun |evalSharpOne| (x \#1) (declare (special \#1)) (EVAL x))
| 
| so at the time of eval |#1| has special binding.  My understanding is
| that such bindings are visible to eval.

The above shows that |#1| is *declared*.  But whereis it defined?

-- Gaby


_______________________________________________
Axiom-developer mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/axiom-developer

Reply via email to