Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Lisp isn't even all that unique any more. Garbage collection, closures, REPL & macros are all available in other languages these days. Scala for instance has all these features.


It's still mostly unique as a fully homoiconic programming language where code is represented as a simple data structure at the heart of the language.


Wolfram language is fully homoiconic and it has idioms Lisp will never have (UpValues, for example).

It's there for 25 years, and yet almost nobody seems to notice. I just find it extremely funny. :-)


Homoiconic isn't actually a very meaningful term. In Scala code is also represented as a data structure (AST), and macros produce ASTs. Heck C code is represented as a data structure: the string (although of course C does not have macros like Lisp & Scala).


In my post I said: "a fully homoiconic programming language where code is represented as a simple data structure at the heart of the language." By which I mean: a core built-in data type that is well supported and easy to use.

I wouldn't call an AST a simple data structure at the heart of any of the languages you mentioned. The powerful thing about LISP is that when you manipulate data the easiest tool to reach for is lists, and when you manipulate code you use lists.


An AST is just objects. Just like Lisp was designed to manipulate lists, Scala is designed to manipulate objects. The difference is that an AST has more structure, which is a good thing. The least structured are just plain strings, then come s-expressions, then ASTs. Lisp is only halfway there to a modern macro system.


I beg to differ. I won't even look at a language who doesn't have a macro system like CL does. Which only really works out well if its homoiconic. (For serious use that is, certain feature can of course be interesting regardless of others, e.g. I find erlang's implementation and concurrency mechanisms very interesting.)


I prefer my macros type-checked.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: