{"id":252,"date":"2012-07-20T23:47:39","date_gmt":"2012-07-20T13:47:39","guid":{"rendered":"http:\/\/juliangamble.com\/blog\/?p=252"},"modified":"2015-03-15T20:07:06","modified_gmt":"2015-03-15T09:07:06","slug":"the-little-schemer-in-clojure","status":"publish","type":"post","link":"https:\/\/juliangamble.com\/blog\/2012\/07\/20\/the-little-schemer-in-clojure\/","title":{"rendered":"The Little Schemer in Clojure"},"content":{"rendered":"<p><a href=\"http:\/\/juliangamble.com\/blog\/wp-content\/uploads\/2012\/07\/TLSCover.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft  wp-image-235\" title=\"The Little Schemer\" src=\"http:\/\/juliangamble.com\/blog\/wp-content\/uploads\/2012\/07\/TLSCover.png\" alt=\"\" width=\"182\" height=\"224\" \/><\/a>The Little Schemer is a delightful book that has been the road to LISP for many people. Highlights include the YCombinator and the metacircular evaluator.<\/p>\n<p>Positive reviews abound, with this book being the key to several &#8216;aha&#8217; moments:<\/p>\n<ul>\n<li>&#8220;<em>This is a book that literally blew my mind<\/em>.&#8221; <a href=\"http:\/\/anthonylewis.com\/2007\/11\/03\/the-little-schemer\/\">Anthony Lewis<\/a><\/li>\n<li>&#8220;<em>I recently read The Little Schemer and had my mind blown<\/em>&#8221; <a href=\"http:\/\/creativejs.com\/2011\/08\/recursion-see-recursion\/#comment-336\">Jamie Strachan<\/a><\/li>\n<li>&#8220;<em>I found Lisp to be a load of brackets till I read The Little Schemer. It blew my mind, was the best programming book I have ever read.<\/em>&#8221; <a href=\"http:\/\/programmers.stackexchange.com\/a\/126420\">a1212<\/a><\/li>\n<li>&#8220;The Little LISPer\u00a0blew my mind.&#8221; <a href=\"http:\/\/programmers.stackexchange.com\/a\/18513\">Sal<\/a><\/li>\n<\/ul>\n<p><a href=\"http:\/\/juliangamble.com\/blog\/wp-content\/uploads\/2012\/07\/TLLCover.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-254\" title=\"TLLCover\" src=\"http:\/\/juliangamble.com\/blog\/wp-content\/uploads\/2012\/07\/TLLCover.png\" alt=\"\" width=\"179\" height=\"225\" \/><\/a><\/p>\n<p>There is much buzz in the programmer zeitgeist about this book, and whilst the software development world has changed much since it was written &#8211; if anything it is coming closer to the ideals of this book. \u00a0In many ways, it is a timeless classic, and well worth giving a new lease of life in Clojure.<\/p>\n<p>The book\u00a0deliberately steers away from using library functions, and instead builds up on a minimal set of primitives, in order to be able to build a lisp interpreter for that minimal set of primitives. (In addition to teaching recursion.)<\/p>\n<p>This series of posts is will communicate the big ideas of each Chapter of this book in Clojure as I work through it. I&#8217;m not aiming to cover every function or every question &#8211; just those that seem the most pertinent or the most useful to the big ideas in the chapter.<\/p>\n<p><strong>Questions<\/strong><\/p>\n<p><em>Is this really a good way to learn Clojure?<\/em><\/p>\n<p style=\"padding-left: 30px;\">Fascinating question. I don&#8217;t believe the original book was ever intended to teach &#8216;The Scheme Language&#8217; &#8211; but to teach just enough for the reader to get some big ideas in Computer science.<\/p>\n<p style=\"padding-left: 30px;\">Is this a good way to learn Clojure? <a href=\"http:\/\/stackoverflow.com\/questions\/4030388\/will-reading-the-little-lisper-help-me-in-learning-clojure\">No<\/a>.\u00a0The book is about\u00a0deliberately steering away from using library functions, and instead builds up on a minimal set of primitives, in order to be able to build a lisp interpreter for that minimal set of primitives. (In addition to teaching recursion.) You can read more about this idea <a href=\"http:\/\/thelittlelisper.blogspot.com.au\/2010\/09\/steve-yegge-how-many-primitives-does-it.html\">here<\/a>.<\/p>\n<p><em>Where does this fit in the bigger picture?<\/em><\/p>\n<p style=\"padding-left: 30px;\">The theme is <a href=\"http:\/\/juliangamble.com\/blog\/2012\/07\/13\/amazing-lisp-books-living-again-in-clojure\/\">Amazing Lisp Books living again in Clojure<\/a>.<\/p>\n<p><strong>Chapters<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/07\/20\/the-little-schemer-in-clojure-chapter-1\">Chapter 1 &#8211;\u00a0Toys<\/a><\/li>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/07\/29\/the-little-schemer-in-clojure-chapter-2\/\">Chapter 2 &#8211;\u00a0Do It, Do It Again<\/a><\/li>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/08\/03\/the-little-schemer-in-clojure-chapter-3\/\">Chapter 3 &#8211;\u00a0Cons the Magnificent<\/a><\/li>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/08\/10\/the-little-schemer-in-clojure-chapter-4-numbers-games\/\">Chapter 4 &#8211; Number Games<\/a><\/li>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/08\/17\/the-little-schemer-in-clojure-chapter-5-the-multichapter-chapter\/\">Chapter\u00a05 &#8211;\u00a0Multi-chapter Chapter<\/a><\/li>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/08\/19\/the-little-schemer-in-clojure-chapter-6-oh-my-gawd-its-full-of-stars\/\">Chapter\u00a06 &#8211;\u00a0Its Full of Stars<\/a><\/li>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/08\/31\/the-little-schemer-in-clojure-chapter-7-shadows\/\">Chapter\u00a07 &#8211;\u00a0Shadows<\/a><\/li>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/09\/07\/the-little-schemer-in-clojure-chapter-8-friends-and-relations\/\">Chapter 8 &#8211;\u00a0Friends and Relations<\/a><\/li>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/09\/15\/the-little-schemer-in-clojure-chapter-9-lambda-the-ultimate-deriving-the-y-combinator\/\">Chapter\u00a09 &#8211;\u00a0Lambda The Ultimate<\/a><\/li>\n<li><a href=\"http:\/\/juliangamble.com\/blog\/2012\/10\/15\/the-little-schemer-in-clojure-chapter-10-what-is-the-value-of-all-this-a-simple-scheme-evaluator-in-clojure\/\">Chapter\u00a010 &#8211;\u00a0What is the value of all this?<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The Little Schemer is a delightful book that has been the road to LISP for many people. Highlights include the YCombinator and the metacircular evaluator. Positive reviews abound, with this book being the key to several &#8216;aha&#8217; moments: &#8220;This is &hellip; <a href=\"https:\/\/juliangamble.com\/blog\/2012\/07\/20\/the-little-schemer-in-clojure\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":235,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[3,12],"tags":[],"class_list":["post-252","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-clojure","category-thelittleschemer"],"_links":{"self":[{"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/posts\/252","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/comments?post=252"}],"version-history":[{"count":16,"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/posts\/252\/revisions"}],"predecessor-version":[{"id":781,"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/posts\/252\/revisions\/781"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/media\/235"}],"wp:attachment":[{"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/media?parent=252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/categories?post=252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/juliangamble.com\/blog\/wp-json\/wp\/v2\/tags?post=252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}