【问题标题】:Passing a list to a multiple-arity function in DrRacket (Scheme)将列表传递给 DrRacket 中的多参数函数(方案)
【发布时间】:2017-08-01 17:47:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: scheme racket lcm arity


    【解决方案1】:

    使用apply时,固定数量和非固定数量没有区别:

    (apply lcm (build-list 256 add1))
    

    【讨论】:

    • 啊。我明白我误解了 apply 的使用方式。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 2013-01-10
    • 2011-03-29
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多