Comment by satvikpendem

9 months ago

Lisp is homoiconic which most other languages are not. This makes it useful for certain applications over others.

Yep, but that and the closely related macro system are about the only unique features left. I’ll add “has a spec” and “is reasonably fast” too.

Julia has convinced me that the value of this is limited. It turns out to be enough to have the AST as a first-class value in the language, which can be manipulated and emitted via macros at compile time, or fed to eval at run time.

The more usual Lisps (I consider Julia, like Dylan before it, to be a Lisp) give up most of the advantages of syntax in exchange for an admittedly eloquent macro system. Julia gets the advantage of syntax, and a macro system which is of equal expressive power but less easy to use. Also, in Julia, a macro leads with `@`, the way a macro in Rust ends with `!`, meaning you can read the difference between a macro and a function at the call site. I consider that a good thing.