{"id":8249,"date":"2019-08-17T11:14:42","date_gmt":"2019-08-17T15:14:42","guid":{"rendered":"https:\/\/irreal.org\/blog\/?p=8249"},"modified":"2019-08-17T11:14:42","modified_gmt":"2019-08-17T15:14:42","slug":"the-nature-of-lisp","status":"publish","type":"post","link":"https:\/\/irreal.org\/blog\/?p=8249","title":{"rendered":"The Nature of Lisp"},"content":{"rendered":"<p>The other day I ran across a pointer to Slava Akhmechet\u2019s post <a href=\"http:\/\/www.defmacro.org\/ramblings\/lisp.html\">The Nature of Lisp<\/a> from back in 2006. It\u2019s an old post, obviously, but is worth reading because it does a very nice job of explaining what\u2019s so good about Lisp and why a programmer should spend a bit of time to understand it.<\/p>\n<p>Akhmechet tried several times to understand Lisp and what all the excitement was about but kept failing. The problem, he says, was the strange syntax. Of course, Lisp doesn\u2019t really have much syntax and what it does is extremely simple. What he was really complaining about is what all newcomers to Lisp complain about: all those parentheses.<\/p>\n<p>Akhmechet\u2019s approach to explaining Lisp\u2019s notation and concepts is to relate them to something that many programmers are already familiar with: XML. Lisp\u2019s s-expressions are basically like XML but simpler and less verbose. Why not just use XML then? To answer that question Akhmechet considers the ANT project builder from the Java world. If you squint real hard, ANT is also Lisp-like in its architecture. You can, for example, define new operations by writing a Java class to implement it. In that way, it\u2019s extensible.<\/p>\n<p>But that approach has its limitations, the first being that you can\u2019t extend the ANT language in XML itself and you can\u2019t introduce new syntax constructs. Akhmechet\u2019s post describes, in a series of steps, how Lisp overcomes these difficulties and offers a much better solution.<\/p>\n<p>If you\u2019re a Lisp weenie or if you\u2019re wondering why anyone would want to be one, take a look at this post. It does a great job in explaining the Lisp nature.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The other day I ran across a pointer to Slava Akhmechet\u2019s post The Nature of Lisp from back in 2006. It\u2019s an old post, obviously, but is worth reading because it does a very nice job of explaining what\u2019s so &hellip; <a href=\"https:\/\/irreal.org\/blog\/?p=8249\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-8249","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/8249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8249"}],"version-history":[{"count":1,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/8249\/revisions"}],"predecessor-version":[{"id":8250,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/8249\/revisions\/8250"}],"wp:attachment":[{"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/irreal.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}