[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: [Axiom-math] BasicOperator's %eval property

**From**: |
Martin Rubey |

**Subject**: |
Re: [Axiom-math] BasicOperator's %eval property |

**Date**: |
29 May 2007 15:06:20 +0200 |

**User-agent**: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 |

"Igor Khavkine" <address@hidden> writes:
>* Greetings Axiom gurus! Here's some more weirdness that I'd like to*
>* understand better. I snipped all the "Loading ..." messages. Any*
>* hints?*
Yes. It's not a weirdness, it's a bug.
Here are the relevant bits:
>* (3) -> feval1(x:INT):INT == x^2*
>* (10) -> evaluate(f,feval1)*
>* (10) ->*
>* (10) f*
>* Type: BasicOperator*
>* (11) -> f(10)*
>* 11) ->*
>* >> System error:*
>* ((0 . 10) 0 . 1) is not of type NUMBER.*
If you say )se me bo on, you'll see that axiom applies elt(f, 10) from
Expression Integer: it coerces 10 to EXPR INT and succeeds.
The function elt is in fact implemented in ExpressionSpace:
elt(op:OP, args:List %) ==
not belong? op => error "Unknown operator"
((u := arity op) case N) and (#args ^= u::N)
=> error "Wrong number of arguments"
(v := evaluate(op,args)$BasicOperatorFunctions1(%)) case % => v::%
okkernel(op, args)
Here comes, what I believe is a bug: belong? is defined in EXPR to give true
always. It really should check whether the %eval property is from EXPR to
EXPR, if it is set. Well, there are other possibilities, too, for example, we
could leave the operator unevaluated if the %eval property does not match. In
any case, currently evaluate(op,args)$BasicOperatorFunctions1(%) blows op.
Could you add it to IssueTracker, please?
Many thanks,
Martin