5 ms·
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.
by maaku 13y ago
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.
- akater 13y agoWolfram 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. :-)
- jules 13y agoHomoiconic 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).
- mrottenkolber 13y agoI 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.)
- frowaway001 13y agoI prefer my macros type-checked.
- maaku 13y agoIn 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.
- jules 13y agoAn 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.