什么';在Smalltalk中,Clojure相当于inject:into:in?

什么';在Smalltalk中,Clojure相当于inject:into:in?,clojure,lisp,smalltalk,combinations,Clojure,Lisp,Smalltalk,Combinations,我试图学习Clojure,但我的突触似乎与Smalltalk有着紧密的联系 这个函数的等价物是什么 [:n :k | (1 to: k) inject: 1 into: [:c :i | c * (n - k + i / i)]] [:n:k |(1到:k)将:1注入:[:c:i | c*(n-k+i/i)]] 这是n,k的二项式系数-也被称为“选择”函数,表示n个事物组合k次的次数 将:s注入:f的clojure等效物是(减少f s lst)太快,太快。我慢了大约20秒!我宁愿说#injec

我试图学习Clojure,但我的突触似乎与Smalltalk有着紧密的联系

这个函数的等价物是什么

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

将:s注入:f的clojure等效物是
(减少f s lst)

太快,太快。我慢了大约20秒!我宁愿说
#inject:into:
相当于
reduce
,因为smalltalk受到lisp的启发:)太棒了。这就是我想到的(defn-choose[nk](reduce(fn[ci](*c(/(+nk)I))1(range 1(+k1)))。一旦我弄明白如何将Smalltalk中缀符号转换成Lisp,那就很容易了,但语法仍然让我头疼:)你也可以使用
(inck)
,而不是
(+k1)