我是 Lisp 的新手,我想知道“+”函数是否真的有上限。
(我想这适用于所有其他算术函数“-”、“/”等)
最佳答案
是的,有一个上限,但确切的上限取决于实现。你保证能够通过至少 50,但这完全取决于。如果您需要对列表求和,最好使用 (reduce #'+ list)
,这应该比任何其他方法都具有更好的可扩展性。
Common Lisp HyperSpec有更多信息。
当谈到值范围时,有两种不同的情况,即 float 和整数。 float 本质上受其大小的限制,从单点 float 变为双点 float 的实现会让我大吃一惊。对于整数和有理数,CL 在 fixnums 和 bignums 之间无缝转换,因此限制是可用于实现的可用地址空间的函数。我怀疑复数也是如此(复数和有理数 -> 如果需要,转到大数;复数 float -> 发出超出范围的信号,或返回 Inf 或 NaN)。
关于lisp - 在 Lisp 中,+ 函数实际上可以有多少个输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974080/