quote とは? - 2
quote とはに関して迷っていたわけですが、shiroさん, arinoさん, id:hiratchさん, id:alohakunさんにたくさんのアドバイスを頂きました。
ありがとうございます。
おかげさまできちんと理解できました。
↓過去の迷い
結局 quote とは?
インタプリタがソースコードを実行するにあたって以下のようなフローがあります。
(1)ソースコード → (2)文字列 → (3)S式 → <<(4)マクロ変換>> → (5)S式 → <<(6)評価>> → (7)Scheme 内部オブジェクト
で、quote は(3)の時点での状態を保持するものだと理解しました。
僕の実装でいうところの Node* な状態の事です。
実装してみよう
実装できた!と思う。
- eqv?を実装した (R5RSのテストをある程度クリアしている)
- Nodeという名前はまぎらわしい → SExpにした
- load 実装で気づいたマクロ展開のタイミングのバグを修正した
- quote を eval できるようになった
残るのは syntax sugar であるところの ' の扱い。
これは alohakunさんや、arinoさんが read マクロというのを教えてくれていて変換するフェーズは明確なのであとは実装するだけのはず。