如何在球拍/计划中添加?

时间:2012-10-30 21:51:44

标签: scheme racket

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

2 个答案:

答案 0 :(得分:8)

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

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

其他指示:Bignum arithmetic,方案numeric towernumbers上的球拍引用。

答案 1 :(得分:6)

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