> 3. I think that using 1/2 instead of ((rat simp) 1 2) does
> not require any object oriented stuff. In fact, you can
> insert rational numbers into a maxima system by defining
>
> (defun $makeclrat(num denom) (/ num denom))
>
> and see what happens.
Many things work, some things break. If you want Maxima to work
*reliably* with this change, I'd think you'd have to read a fair amount
of code. Most of it will be near an instance of the atom RAT (600+
instances), but I'd think it would also be prudent to look at the logic
near NUMBERP, $NUMBERP, and MNUMP (600+). Most of those cases are
uninteresting and won't need to be changed, but some will. And then
there will be a few more obscure cases which you'll only catch with
systematic code reading or systematic testing (i.e. writing lots of new
tests). Or waiting for bug reports, which is not a strategy that really
appeals to me.
-s
PS I agree that you don't need to introduce object orientation for this,
but... see my other mail (forthcoming).