Homoiconicity

Written on November 14 2016 at 17:06 and updated on May 03 2011 at 15:02

I’m really interested in homoiconicity - that is, where the processes can be represented as data in the same language as the processes themselves.

REBOL, which the software that inspires the software generating this content, is homiconic. One of the first things I tried to do in classic vanilla was unify ‘snips’ and ‘dynasnips’, the former being the principle content, and the latter the principle dynamic aspects of a site built on that platform.

Ruby, my favourite language, unfortunately isn’t homoiconic, though it does provide powerful levels of introspection and meta programming. Unlike other languages, procedures can be defined and evaluated as part of the definition of classes, or even other procedures. I couldn’t live without that now.

Regardless, this discovered aesthetic explains why I find myself drawn to Smalltalk, and to Lisp (as do so many others). An elegance in the simplicity and powerful expressiveness of the underlying metaphor.