Design questions
What follows are some questions that came up when I was thinking
about the design for an ANSI CL linear algebra library.
- How slow is CLOS?
- How much does it depend on the implementation?
-
How much dispatching can be done at compile-time? Answer:
Not so much, as was pointed out to me by P.B. on comp.lang.lisp.
The thing is, you can change the class hierarchy pretty much
arbitrarily in the interpreter, so there's not much you can do
at compile time. A more compile-time based approach may require
building our own class system, but that carries its own share of
problems with it, and some may question whether it is the Lisp
Way.
- Do we need a macro system like C++ templates to get
specializations based on e.g. matrix size (for operations tuned for
fixed-size vectors)?
-
How slow are foreign array accesses?
-
Are Lisp compilers smart enough to optimize away the function
call?
- How much does it depend on the implementation?
-
Are there popular Lisp distributions that don't support
finalization? (Finalization is essential if we use dynamically
allocated C arrays as the underlying storage medium.)
- Series functions (/ generators?)
- Can we use custom scanners to support things like in-place
(destructive) copy from e.g. a strided matrix view into compact
storage?
-
Do series functions give performance comparable to that of a
hand-rolled routine?
Last modified: Wed Sep 27 12:33:54 CST 2006