Raymond Toy <raymond.toy at stericsson.com> wrote:
However, there will be a slight cost in speed and consing for functions
that have a fixed number of arguments. So that maxima can do the
checking, the compiled function now takes a &rest arg which we can check
for the number of arguments. Previously, the compiled function had
exactly the desired number of arguments.
I think for consistency, it's nice that the compiled function works the
same as the interpreted. But we do pay a little in speed and consing.
I think this is unfortunate. The ANS for CL defines argument checking
for "safe" code, and every implementation that purports to confurm to
the ANS should support it. The implementation can perform argument
checking more efficiently than application code.
Once again, if there is some implementation that doesn't conform, it
would be better if even remotely possible to bring the CL implementation
intio conformance. The ANS was created precisely to remove hese burdens
from applications. The relevant ANS sections can be found here:
http://www.franz.com/support/documentation/8.0/ansicl/subsecti/argumen0.htmhttp://www.franz.com/support/documentation/8.0/ansicl/subsubse/safeandu.htmhttp://www.franz.com/support/documentation/8.0/ansicl/subsubsu/errordet.htmhttp://www.franz.com/support/documentation/8.0/ansicl/subsubse/toofewar.htm
Which implementations fail?