Robert Dodier wrote:
> On 2/15/07, Douglas Crosher <dtc at scieneer.com> wrote:
>
>>> Does the test against '($ |m| |M|) yield something sensible for
>>> case-sensitive Lisp?
>> Yes, such a test could be appropriate if this behavior is restored.
>> However adding a test for '|m| does break some existing code
>> related to 'abs.
>
> What code is that, by the way?
This change causes some test failures in rtest_abs. For example:
(%i1) 'abs(1);
(%o1) abs(1)
Rather than:
(%i1) 'abs(1);
(%o1) 1
This is caused by code that expects %MABS rather than %ABS.
>> It does appear that other code has developed with this test
>> as-is so it may be best to just drop the test for 'M - this would
>> make the behavior consistent for the lower-case CL variants.
>
> I think there is known strangeness associated with abs.
> So at this point I think I'd rather fix the test so it works for everything
> but abs, and then make abs conform to that. I say this without
> investigating how much work is involved there.
Here are some examples, before then after the above change:
Before:
?print(nounify(op(abs(x)))) -> %MABS
?print(nounify(op(x ^ y))) -> %MEXPT
?print(nounify(op(sin(x)))) -> %SIN
After:
?print(nounify(op(abs(x)))) -> %ABS
?print(nounify(op(x ^ y))) -> %EXPT
?print(nounify(op(sin(x)))) -> %SIN
It's not clear to me why the noun form of abs was chosen to be %MABS, or why
the MABS alias is used rather than just %ABS. Perhaps this is just historical.
Can you think of any problems with the current behavior of nounify? Perhaps
an issue relating to MEXPT, MPLUS, etc.
Regards
Douglas Crosher