c - LISP 算术实现

标签 c lisp arithmetic-expressions

我正在用 D 做一个玩具 lisp 解释器,我不太了解 Lisp 的理论。

我想知道 Lisp 是否可以自己实现基本的算术函数(+、-、×、÷)。 大多数 Lisp/Scheme 方言使用 C 的内置函数实现它,类 Java 语言并将其重载为 lisp 代码(重复实现?)。

我想纯粹用 Lisp 代码编写算术函数。 可能吗?

最佳答案

除非你想使用 Church numerals等等,在某些时候你将不得不进入硬件算术指令(addsubmuldiv) 一种或另一种方式。

如果沿着硬件指令路线走下去,那么根据您的 Lisp 实现,它可能会使用 C 代码实现(尤其是对于基于解释器的实现),或者这些指令可能会直接发出(对于基于 JIT 编译器的实现) ).

如果你想尽可能地成为第一性原理,你可以使用加法和减法指令来实现乘法和除法(在紧要关头,你可以像在学校教的那样来实现它们,尽管你我们正在使用字长的数字——也就是说,对于 32 位机器,每个数字都是 base-4294967296 而不是 base-10)。

关于c - LISP 算术实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31449110/

相关文章:

c - 用户定义的连接函数

这可以原子执行吗?

C - 在另一个控制台应用程序中运行控制台应用程序

lisp - 如何将相似的显示(printf)写入方案中的文件?

macros - 为什么这个 Lisp 宏作为一个整体可以工作,即使每个部分都不起作用?

lisp - 为什么圆心坐标(键 10)与 DXF 数据中的原点不相关?

python - 这个简单的 Python 分数加法器并不完全健壮,并且会收到错误。如何改进?

在 GNU/Linux 上从 C 中的 LAPACK 调用 DPOTRS

algorithm - 如何在不使用任何循环的情况下检查连续值

C中的字符操作