What defines a lisp? Can Julia be called a LISP?
A lisp, from wikipedia:
Lisp (historically LISP) is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation.
Also, from wikipedia:
Once Lisp was implemented, programmers rapidly chose to use S-expressions, and M-expressions were abandoned.
Lisp was the first language where the structure of program code is represented faithfully and directly in a standard data structure, a quality much later dubbed "homoiconicity".
LISP is an acronym for LISt Processing.
Julia code can be represented using
Expr(...) notation. It can be traversed and manipulated as it is a data structure made of symbols and other literals, Julia is homoiconic (and the code is parsed with a lisp). However Julia syntax doesn't make use of just prefix notation, it has M-Expressions.
Some people consider S-Expression only syntax a requirement for a lisp language to be called such. The advantage of S-Exprs is that code is easier to parse and manipulate by other people, it is an indirect benefit, it is a simpler common ground that in turn gives the ability to write more powerful code editing code. Julia has macros, but in some sense, they are less powerful than lisp macros because it is harder to manipulate M-Exprs.