4 ms·
Whenever people bring up Lisp syntax, I like to remind everyone about io language. Its homoiconicity is inspired by Lisp, and almost all good things about Lisp
by oleganza 4y ago
Whenever people bring up Lisp syntax, I like to remind everyone about io language. Its homoiconicity is inspired by Lisp, and almost all good things about Lisp syntax are applied in io, but at the same time it avoids this awkwardness that turns away most of the people (and turns the remaining minority into zealots :-)
So if you design a language and want to use Lisp-like syntax, I recommend to also check out io before steaming ahead.
- jhbadger 4y agoI played with io some time ago as it was one of the languages covered in Bruce Tate's "Seven Languages in Seven Weeks" which give an introduction to seven programming languages (Ruby, Io, Prolog, Scala, Erlang, Clojure, and Haskell) each with a different philosophy. Io seemed an interesting proof of concept, but are you actually using it for a real project or just to explore?
- cardanome 4y agoYeah, Lisps don't have a monopoly in homoiconicity. In addition to io, the Rebol family is also worth checking out. Though I have to admit I can not imagine how a person can be so mentally inflexible as to be not able to tolerate Lisp-style syntax. I get that Common Lisp might look a bit old-school at first glance but something like Clojure is basically designed to look aesthetically pleasing.
- spdegabrielle 4y agoI’d heard that homoiconicity isn’t real and there is no meaningful definition?
- reikonomusha 4y agoA language is homoiconic if code in that language is written using the syntax of data literals of that language. In the case of most Lisps, code is written using the syntax of list and symbol literals. (There are other literals too, of course.) (I (usually) like apples) is a nested list literal with four symbols. You can think of symbols as "interned strings"; they're written without quotes for convenience. It's not unlike ["I", ["usually"], "like", "apples"] in Python, except I had to use actual strings instead of symbols because Python doesn't ship with a standard symbol type. This is also a nested literal list: (loop for i below n do (print i)) but this happens to be a list literal that can be "run" (or in Lisp parlance, evaluated) as code.