将列表传递给DrRacket中的多个arity函数(Scheme)

时间:2017-08-01 17:47:18

标签: scheme racket lcm arity

我正在尝试为{1}}中描述的从1到n的所有数字生成最小公倍数。在DrRacket REPL中,我使用以下代码:

(lcm (apply values (build-list 256 add1)))

这给了我“结果不匹配”错误(预期1,收到256)。当我省略lcm时,我得到一个从1到256输出到控制台的序列。我不确定arity不匹配的原因,因为lcm应该能够采取任意多个参数(根据OEIS-A003418),而apply似乎正在做什么我希望它是最外层的函数,而不是lcm的输入。我错过了什么?此外,如果有更简单的方法将LCM从1写入n,请随时分享。

1 个答案:

答案 0 :(得分:1)

使用apply时,固定arity和非固定arity之间没有区别:

(apply lcm (build-list 256 add1))