One of my main gripes with Common Lisp is its complexity. When I started learning Lisp, I expected to find a beautiful and elegant language, one without a need for syntax. The way C is almost an elegant assembly. Maybe I should have tried Scheme instead.
Common Lisp is anything but elegant. Instead of a regular syntax, you get all these "mini-languages", like the format syntax e.g.
(format t "~{~a~^, ~}" '(1 2 3))
; prints out
; 1, 2, 3
This works fine for list, but not for vectors, which is a problem, since I needed vectors often (for random access).
The loop macro is also quite powerful and complicated. e.g.
(loop :for i :from 1 :to 1000 :collect (* i i))
will create a list of square of 1 to 1000. The loop macro can become really convoluted, not at all simple.
The fact that Common Lisp is a Lisp-2 makes treating functions as first-class as rather awkward. I could never remember when I needed to prepend a lambda with #'.
One of my main gripes with Common Lisp is its complexity. When I started learning Lisp, I expected to find a beautiful and elegant language, one without a need for syntax. The way C is almost an elegant assembly. Maybe I should have tried Scheme instead.
Common Lisp is anything but elegant. Instead of a regular syntax, you get all these "mini-languages", like the format syntax e.g.
This works fine for list, but not for vectors, which is a problem, since I needed vectors often (for random access).The loop macro is also quite powerful and complicated. e.g.
will create a list of square of 1 to 1000. The loop macro can become really convoluted, not at all simple.The fact that Common Lisp is a Lisp-2 makes treating functions as first-class as rather awkward. I could never remember when I needed to prepend a lambda with #'.
This article may be of interest http://xahlee.info/comp/Common_Lisp_quotations.html
I found much of the elegance I was expecting in Haskell. But maybe Scheme is a better lisp.