3

例如,如果你尝试(+ 3 4),它是如何在源中分解和计算的,具体来说?它使用递归add1吗?

4

2 回答 2

8

的实现+实际上比你想象的要复杂得多,因为算术在 Racket 中是通用的:它适用于整数、有理数、复数等。你甚至可以混合和匹配这些类型的数字,它会做正确的事情。最后,它最终将使用 C 中的算术,这是编写运行时系统的内容。

如果你好奇,你可以在这里找到更多关于数字塔的内容:https ://github.com/plt/racket/blob/master/src/racket/src/numarith.c

其他指针:Bignum 算术、Scheme数字塔、Racket 对数字的引用。

于 2012-10-30T23:00:10.373 回答
6

+操作符是一种原始操作,是核心语言的一部分。出于效率原因,将其实现为递归过程没有多大意义。

于 2012-10-30T21:55:46.180 回答