# Lisp In Small Pieces - The Project ## Overview | Attribute | Value | | ------------------ | ----- | | **Due Date** | [[2023-05-01]] | | **Completed Date** | | | **Status** | #status/in_progress | ### Success Criteria #### Goals - [x] explore language implementation decisions (e.g. dynamic vs lexical scope bindings) - [x] get up to speed on Clojure tooling - [x] implement 80% of chapter exercises for ch 1 - [x] have working code for chapter 1 by [[2022-05-20]] - [x] write about what I learn - stick with it for two months - have working examples for chapters 1-6, 8, 9 in [[Clojure]] #### Non-Goals - this is a toy, for fun; not trying to make a production-grade language ### Related Goals - [[Get Back In The Game]] ## Reference - [Chouser's Project Announcement](https://chouser.us/lisp2022/) - [Christian Queinnec's Book Site](https://christian.queinnec.org/WWW/LiSP.html) - [1st Edition Code](https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/scheme/bookcode/queinnec/lisp.tgz) - [2nd Edition Code](https://christian.queinnec.org/Books/LiSP-2ndEdition-2006Dec11.tgz) - ![[Lisp in Small Pieces#Scheme Summary]] ## Steps - [x] acquire a copy of [[Lisp in Small Pieces|LiSP]] - [x] join slack group - [x] start reading chapter 1 - [x] Ch1 - [x] port Ch1 example code to Clojure - [x] implement dynamic scope - Do 100% of Ch1 exercises #status/canceled because of exercise 1.7, implement `call/cc`. My implementation uses the runtime call stack and the JVM doesn't natively support continuations. I'm going to skip this and wait for [[Lisp in Small Pieces|LiSP]] Chapter 3 which goes into implementing `call/cc` - [ ] Ch2 - TBD ## Log [[2022-04-25]] Joined slack group, bought ebook version of LISP [[2022-05-08]] finished reading chapter 1 [[2022-05-09]] started writing Clojure port for Ch1 [[2022-05-10]] flow state [[2022-05-19]] finished ch1 exercises and dynamic scope [[2022-05-19]] started [[Lisp in Small Pieces#Ch1 - The Basics of Interpretation|LiSP]] Ch1 write-up [[2022-05-24]] finished [[Lisp in Small Pieces#Ch1 - The Basics of Interpretation|LiSP]] Ch1 write-up