What is LISP
0) LISP is NOTHING
This point is trivial, LISP is simply just a (family of) programming languages which share a common philosophy of being the “Abstract Nonsense”, they provide people with the ability to construct any structure (as from mathematical prospective) they demand.
The key here is, it is not LISP that solves the problem, it is the programmer that are freed from “being taught to program by a programming language”. In LISP, there is no
main method whose type signature is
public static void (String), two
def blocks is not required to be separated by two blank lines, everything is not necessarily an object, etc. the only thing given by LISP is the freedom that does NOTHING to the users’ ways of thinking.
1) LISP is SOMETHING
Clearly, the LISP languages in the market (x) are equipped with a lot features other than the “axioms”, but, they are still LISP. To come up with a metaphor, think about an arbitrary set, it can be viewed differently when equipped with different topologies, and the topologies may not be homeomorphic to each other, but none of the topologies defined on it changes the element of the set.
Now we can view the “LISP” discussed in part 0) as the “set underneath”, and this is then, “SOMETHING” that can be referred as LISP.
It is the so-called homogeneity that makes a language LISP. From the well known story of Peter Norvig advocating Python at Stanford, we can infer that what John McCarthy regards as the most important, or say unique, part of LISP, to be able to manipulate its code as data, Gracefully.
2) LISP is EVERTHING
As one may argue, the LISP languages (or LISP dialects) are so different from each other since they all equipped with their own selection of features sets, but following the argument I gave above, they are all LISPs on themselves. It doesn’t matter if a language has pattern matching, advanced type system, or whatever, as long as it follows the points covered in the both parts above, it is a LISP.
Holding the spirit of LISP doesn’t oppose embracing new features, which means we will eventually find every possible combination of programming languages features in the LISP family, and therefore LISP is EVERYTHING.