【问题标题】:What's the Clojure equivalent of inject:into: in Smalltalk?在 Smalltalk 中,Clojure 的等价物是什么?
【发布时间】:2011-01-28 18:51:40
【问题描述】:

我正在尝试学习 Clojure,但我的突触似乎与 Smalltalk 硬连线。

这个函数的等价物是什么?

[:n:k | (1 到: k) 注入: 1 到: [:c :i | c * (n - k + i / i)]]
  • 这是 n, k 的二项式系数 - 也称为“选择”函数,表示 n 个事物的组合数 k 次

【问题讨论】:

  • 太棒了。这就是我想出的 (defn choose [n k] (reduce (fn [c i] (* c (/ (+ (- n k) i) i))) 1 (range 1 (+ k 1))))。一旦我弄清楚如何将 Smalltalk 中缀符号转换为 Lisp,这很容易,但语法仍然伤我的脑筋 :)
  • 你也可以用(inc k)代替(+ k 1)

标签: clojure lisp smalltalk combinations


【解决方案1】:

lst inject: s into: f 的 clojure 等效项是 (reduce f s lst)

【讨论】:

  • 太快了,太快了。我慢了大约 20 秒!
  • 我宁愿说#inject:into: 等同于reduce,因为smalltalk 受到lisp 的启发:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 2021-06-19
相关资源
最近更新 更多