[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
I agree strongly that vague arguments about optimizatons are
a bad idea. The only optimizations permitted should be those
proven to not affect the semantics of the program. I have seen
too many cases where seemingly harmless optimizations cause
subtle bugs when the user's program does something unusual.
In the current case, mapping functions should certainly be required
to conform to the reasonale expectation of the user that a NCONC
will work. If permitted, this kind of incompatability is
exactly what will make common lisp non-portable. Saving a
cycle or two just isn't worth the dirtyness of explaining
to the user why a NCONC won't always work and what to avoid.
I am reminded of Larry Masinter's golden words:
"I don't believe in portability in the absence of porting"
There should be only ONE implementation of the mapping functions,
written in unambiguous primitives, shared by all common lisp
implementations. Likewise for the largest possible subset of
the core language. This is the best way to make sure that
the zillion+1 small implementation choices one has to make,
even working from the tightest specification, are made the same
way by all the implementations.