← Back to context

Comment by skywal_l

4 years ago

The syntax for me is a drag on the language. Make me spend more than a 2 seconds trying to untangle parameters from function name and you lost me.

What I think made the language special is its level of abstractness. Unless I am mistaken, it is the first language where you could manipulate function as a first-class citizen. This and the ability to use closure. 60 years ago, it was really innovative.

Now, javascript does it...

Definitely first-order functions made LISP powerful compared to its contemporaries-- but also you can't mention abstraction without mentioning macros. Macros are first-class metaprogramming, and very much enabled by the uniformity of s-expressions.

That said, people can do awesome stuff with any language, so all this is very subjective IMO.

The function name is the first item; the parameters are the others: (fun x y z).

Some Lisp dialects separate the two further in definitions:

  (defun fun (x y z) ...)

The Scheme style is "definition follows use": the definition looks like the call:

  (define (fun x y z) ...)

Now if the function name above were actually y and not fun, I'd have to spend more than two seconds separating it from the arguments fun, x and z.