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 会让程序更好读。