Homoiconicity Revisited
&gt; let’s say a word means what the people who use it mean by it.<p>This is how words work, so I don&#x27;t know why the author says &quot;let&#x27;s say&quot;. There is no &quot;correct&quot; definition of a word; the dictionary which you might consult to obtain such a definition is itself just recording what is the most commonly-used meaning of the word among people who use it most natively.<p>I make this point not out of pure pedantry, although that may play a part, but also because nobody seems to know what &quot;homoiconicity&quot; actually is — nor does it seem to actually be very important for us to find out! When people cannot agree on what a word means, I think it&#x27;s reasonable to say that that word doesn&#x27;t really <i>have</i> a meaning.<p>Some time ago, I had the opportunity to talk to Matthias Felleisen — the progenitor of the Racket project (a derivative of Scheme, itself a derivative of Lisp). When I asked whether he felt homoiconicity was an important quality of a language, he indicated something to the effect of (heavily paraphrasing) &quot;I don&#x27;t know what that word means, and you don&#x27;t know what that word means, but whatever you think it means is not important. It doesn&#x27;t matter.&quot;<p>Shriram Krishnamurthi, a former student of Felleisen&#x27;s and one of the original members of the Racket project, can be found to disparage the word whenever he finds it on Twitter. He also consistently refers to it as h11y (that&#x27;s &quot;H-eleven-Y&quot;), not just to save characters in tweets, but also, I think, because the word itself is not very important. I&#x27;ve seen multiple exchanges where he challenges peoples&#x27; attempts at defining the term precisely, and invariably they give up. (One such exchange is visible at [0].)<p>Another Racketeer, Matthew Flatt, recently started a push to build a new Racket language (now called Rhombus, I think) which abandons s-expressions almost altogether, but without losing any of the benefits of Racket.<p>If these people, who are all everyday Lispers, and who are widely known and respected in the programming language community, don&#x27;t have a solid definition of &quot;homoiconicity&quot; and, further, don&#x27;t think it&#x27;s worth investing the time to define it... maybe we should stop getting articles like this, and maybe we should instead tell people to abandon their search for the One True Meaning.<p>(I do want to say that I think this is one of the better articles about the topic that I&#x27;ve read, and the author did a good job. I just think the topic is not as interesting as the author expects their readers to find it.)<p>Homoiconicity doesn&#x27;t matter. Nobody can define it very precisely, so no two people will have the exact same definitions in their head when discussing it, so any talk regarding it will be necessarily lossy (or, in the worst case, completely non-productive). If the literal representation of your language happens to evoke some imagery in your mind of the secret machinations of the underlying forms or something, that&#x27;s great! But I don&#x27;t think it&#x27;s worth pursuing this quality specifically. What syntax works this way for you may not work well for others, or vice versa.<p>I think that, instead, it is better to focus on more specific goals. Maybe your language is very tree-oriented, so you make it easy to represent trees directly. Something like that. But the specific goal of &quot;homoiconicity&quot; — whatever that means to <i>you</i> — is perhaps not worthwhile, nor should we be seeking to define it. We should leave it by the wayside and move on!<p>[0] <a href="https:&#x2F;&#x2F;twitter.com&#x2F;ShriramKMurthi&#x2F;status&#x2F;1046944950531829760" rel="nofollow">https:&#x2F;&#x2F;twitter.com&#x2F;ShriramKMurthi&#x2F;status&#x2F;104694495053182976...</a>