"Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary."
And--this is just my understanding of a SOX-compliant software company; I've never actually worked in one--part of that legal duty is to document any changes made to the codebase (the product) so it can be QA-ed.
Languages evolve not by accumulating new features, but by removing the restrictions that make those features seem necessary
As far as I know, Arc does little to remove restrictions from Lisp. Examples:
- (setf (* 2 x) (- y 4)) cannot be expressed.
- Infinite lists
- Infinite memory (limited only by the total amount of information --- far from what we have now)
- Why do my objects "disappear" when the program ends? The whole serialization "feature" comes from there.
- Hash-tables are 1-1 mappings. Why not n-1? Why can't I write (= (color 'nicholas 'car 2) 'blue) without having to implement it myself?
- Speed of execution. Because compilers are not "sufficiently smart", we have to add declarations to the language.
Did I miss anything?