将列表传递给 DrRacket 中的多参数函数(方案)
Passing a list to a multiple-arity function in DrRacket (Scheme)
我正在尝试为从 1 到 n 的所有数字生成最小公倍数,如 OEIS-A003418 中所述。在 DrRacket REPL 中,我使用以下代码:
(lcm (apply values (build-list 256 add1)))
这给我一个 "result arity mismatch" 错误(预期 1,收到 256)。当我省略 lcm
时,我得到一个从 1 到 256 的序列输出到控制台。我不确定元数不匹配的原因,因为 lcm
应该能够接受任意多个参数(根据 the docs),而 apply
似乎在做什么我希望它是最外层的函数而不是 lcm
的输入。我错过了什么?另外,如果有更简单的从1到n编写LCM的方法,请随时分享。
当你使用apply
:
时,固定数量和非固定数量没有区别
(apply lcm (build-list 256 add1))
我正在尝试为从 1 到 n 的所有数字生成最小公倍数,如 OEIS-A003418 中所述。在 DrRacket REPL 中,我使用以下代码:
(lcm (apply values (build-list 256 add1)))
这给我一个 "result arity mismatch" 错误(预期 1,收到 256)。当我省略 lcm
时,我得到一个从 1 到 256 的序列输出到控制台。我不确定元数不匹配的原因,因为 lcm
应该能够接受任意多个参数(根据 the docs),而 apply
似乎在做什么我希望它是最外层的函数而不是 lcm
的输入。我错过了什么?另外,如果有更简单的从1到n编写LCM的方法,请随时分享。
当你使用apply
:
(apply lcm (build-list 256 add1))