LISP算术实施

2 c lisp arithmetic-expressions

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

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

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

Chr*_*ung 5

除非你想使用Church数或类似的,在某些时候你将不得不进入硬件算术指令(add,sub,mul,div)这种或那种方式.

如果沿着硬件指令路由,那么根据你的Lisp实现,它可以使用C代码实现(特别是对于基于解释器的实现),或者可以直接发出那些指令(对于基于JIT编译器的实现).

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