# 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