
Common Lisp [New Site] - dwc
http://lisp-lang.org/
======
agumonkey
Just in case people don't get it, the home page is not your LCD smearing or
failing, it's a slightly transparent gradient over a the city night.

------
marczellm
It's great that someone is working on bringing back Common Lisp from its
deathbed.

However, even on the home page of that website, there are stuff that needs
revising in order to make Common Lisp a modern language. This is subjective of
course.

    
    
      (reduce #'- (reverse (list 1 2 3)))
    

What's that #'-? Need none of such obscure syntax.

    
    
      (mapcar #'string-downcase (list "Hello" "world!"))
    

WTF is mapcar? The whole car-cons terminology needs to be removed or at least
banished to a 'low-level feature' status where most people don't need it, I
think. Of course I'm highly influenced by Python where everything has to be
written in the way I think, and not the way the computer thinks.

    
    
       (make-instance 'book :title "ANSI Common Lisp" :author "Paul Graham")
    

Make-instance? It's called new in C# and Java which is 3 keystrokes, and in
Python and C++ it's exactly 0 keystrokes. It only gets worse with hash-tables:

    
    
       (defparameter *d* (make-hash-table))
       (setf (gethash 'a *d*) "b")
    

which is in Python

    
    
       d = {'a': b}
    

The generalness of Common Lisp means that it's a helluva lot of typing. And
reading too! To get people to use it much, I think these areas need a lot of
improvement.

And promoting SLIME as an IDE is not ideal either. I know it is amazing, and I
use Emacs a lot, but the learning curve for Emacs itself is so steep, and it's
so different from anything else currently in use, that I think this in itself
is able to drive a lot of people away from Lisp. Not to mention that even
though Emacs does exist for Windows, every package update or new release comes
with an awful lot of new bugs that come from very few or no testing on
Windows. Common Lisp needs an IDE of JetBrains quality and ease of use.

~~~
lispm

        (reduce #'- (reverse (list 1 2 3)))
    

You can use:

    
    
        (reduce (function -) (reverse (list 1 2 3)))
    

or

    
    
        (reduce '- (reverse (list 1 2 3)))
    
    

Then

    
    
        (mapcar #'string-downcase (list "Hello" "world!"))
    

Use:

    
    
        (map 'list #'string-downcase (list "Hello" "world!"))
    

> Make-instance? It's called new in C# and Java which is 3 keystrokes,

Slightly advanced users type m - i complete.

If you want to call it 'new', then just add 'new'. Common Lisp is extensible.

    
    
        CL-USER 32 > (defclass a () ((b :initarg :b)))
        #<STANDARD-CLASS A 4020124173>
    
        CL-USER 33 > (setf (symbol-function 'new) #'make-instance)
        #<STANDARD-GENERIC-FUNCTION MAKE-INSTANCE 4100096004>
    
        CL-USER 34 > (new 'a :b 10)
        #<A 4020133143>
    

Hashtables, since Common Lisp is a programmable language, that syntax is user
extensible. Example:

    
    
        CL-USER 42 > (defparameter *h* #{(a 5) (c 6) (b 3)})
        *H*
    
        CL-USER 43 > *h*
        #{(C 6) (B 3) (A 5)}

