<p><span class="h-card" translate="no"><a href="https://mastodon.social/@shriramk" class="u-url mention">@<span>shriramk</span></a></span> <br />I'm not saying it isn't good at other things. But I don't think it's uniquely good at most things. For example, there are things that APL, Haskell or C might be better at. And I genuinely think that, for example, Lisp (Steve Russell's, not John McCarthy's or Peter Landin's) sucks at being a pen&paper/blackboard notation, and that Haskell or APL or even C are much better at that. (Of course, XSLT would be even worse in that context! (Although I find it hard to think of a context at which XSLT would be better))</p><p>I think that trees are a special structure (in the context of languages) because we like it when languages are compositional.</p><p>However, I don't think that you would benefit much if you were using a language with a Lisp-like syntax that wouldn't support macros, i.e. wouldn't allow to apply its tree transformation features to its own expressions. (You would still get some benefits from generic tools that allow you to work with s-expressions, like Emacs or the GRASP thing that I'm working on)</p><p>But what this "self-applicability" effectively does is it lets you decide exactly what your programs are going to look like, which is unlike any other programming experience that I ever had.</p><p>(At Bell Labs they had this TMG thing - which was also self-applicable - that was later replaced by Yacc which effectively allowed them to define plethora of languages, which was perhaps similar in some ways)</p><p><span class="h-card" translate="no"><a href="https://scholar.social/@khinsen" class="u-url mention">@<span>khinsen</span></a></span> <span class="h-card" translate="no"><a href="https://fosstodon.org/@nilesh" class="u-url mention">@<span>nilesh</span></a></span></p>