LISP1-interpreter

查看原文

LISP1-interpreter 只需要简单的 9 个基本元素就能构建出来。McCarthy 的 S 表达式和谓词有 5 个:

  • atom 需要这个是因为 car 和 cdr 都是应用于列表,而你不可能将 car 应用于单一元素来获取信息。
  • eq 用于测试元素的相等性。
  • car 返回 cons cell 的第一个。
  • cdr 返回 cons cell 的第二个。
  • cons 创建一个新的 cons cell,cell 有两个元素。

而要想运行 s 表达式,我们还需要 4 个元素:

  • quote 用于表示一个表达式,而非求值
  • cond 用于条件分支
  • lambda 用于标记函数
  • label 用于方便做递归 # 需要注意的是,label 不是必须的,另外一个做递归的方法是用 Y combinator,不过 label 会让程序更好读。