我正在尝试为{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,请随时分享。
答案 0 :(得分:1)
使用apply
时,固定arity和非固定arity之间没有区别:
(apply lcm (build-list 256 add1))