c - 在自己编写扩展之前要在 C 中实现多少 lisp?

标签 c parsing lisp common-lisp interpreter

我正在用 C 实现一个 lisp 解释器,我已经实现了一些原语,如 cons 、 car 、 cdr 、 eq 、基本算术东西。

就在我开始实现 define 和 lambda 之前,我突然想到我需要实现一个环境。我不确定我是否可以在 lisp 本身中实现它。

我的意图是实现最少量的 lisp,这样我就可以编写语言本身的扩展。我不确定有多少是最小的,实现 FFI 是否符合最小要求?

最佳答案

您问题的答案取决于您赋予“最小”一词的含义。

鉴于你的问题,并假设你不想让一个实现与当今 Common Lisp 和 Schema 的优秀实现竞争,我的假设是你想要的“最小”: Turing complete ,它能够表达任何可以用通用编程语言表达的计算。

有了这个假设,您还需要实现另外三件事:

  1. 条件形式(cond)
  2. lambda 表达式(lambda)
  3. 一种定义递归 lambda 表达式的方法(labelsdefun)

然后您的解释器应该能够评估表格。这应该足以让语言等同于初始 LISP ,允许用语言表达任何可计算的函数。

关于c - 在自己编写扩展之前要在 C 中实现多少 lisp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702864/

相关文章:

c - 带字符串和长的 fscanf

c - 无法解决错误 : control reaches end of non-void function

c - 在两个模块之间共享 sizeof(array)

c++ - Boost.Spirit气值序列 vector

python - 在使用 pyparsing 制作递归解析器时需要帮助

c - 更改 ruby​​ 脚本文件后是否需要重新编译 C-mruby 应用程序?

objective-c - 如何确定C或Objective-C中的URL、URI和Path?

lisp - 无需按下 Enter 按钮即可读取字符

lisp - 为什么 LISP 在使用 IF 语句的函数中打印 NIL?

lisp - 从列表中提取列表