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 マクロというのを教えてくれていて変換するフェーズは明確なのであとは実装するだけのはず。