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?
http://www-swiss.ai.mit.edu/~jaffer/r4rs_2.html#SEC2
"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."
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?