我正在用 C 实现一个 lisp 解释器,我已经实现了一些原语,如 cons 、 car 、 cdr 、 eq 、基本算术东西。
就在我开始实现 define 和 lambda 之前,我突然想到我需要实现一个环境。我不确定我是否可以在 lisp 本身中实现它。
我的意图是实现最少量的 lisp,这样我就可以编写语言本身的扩展。我不确定有多少是最小的,实现 FFI 是否符合最小要求?
最佳答案
您问题的答案取决于您赋予“最小”一词的含义。
鉴于你的问题,并假设你不想让一个实现与当今 Common Lisp 和 Schema 的优秀实现竞争,我的假设是你想要的“最小”: Turing complete ,它能够表达任何可以用通用编程语言表达的计算。
有了这个假设,您还需要实现另外三件事:
- 条件形式(
cond
) - lambda 表达式(
lambda
) - 一种定义递归 lambda 表达式的方法(
labels
或defun
)
然后您的解释器应该能够评估表格。这应该足以让语言等同于初始 LISP ,允许用语言表达任何可计算的函数。
关于c - 在自己编写扩展之前要在 C 中实现多少 lisp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702864/