2011-01-28 26 views
14

私はClojureを学ぼうとしていますが、私のシナプスはSmalltalkにハードワイヤード接続されているようです。Clojureと同等のinject:into:Smalltalkには何がありますか?

この機能に相当するものは何ですか?

 
[:n :k | (1 to: k) inject: 1 into: [:c :i | c * (n - k + i/i)]] 
  • これは、K nの二項係数である - また、「選択」関数として知られ、撮影したk回
+0

驚くばかりです。これは私が思いついたものです(defnは[n k]を選ぶ(fn [c i](* c)/(+( - n k)i))1)(範囲1(+ k 1)))))。 Smalltalkの中置記法をLispに変換する方法を見つけたら、それはかなり簡単でしたが、構文はまだ私の脳を傷つけています:) –

+2

'(+ k 1)'の代わりに '(inc k)'を使うこともできます。 –

答えて

14

lst inject: s into: fのClojureの等価物であるN個のものの組み合わせの数を表します(reduce f s lst)

+0

速すぎ、速すぎる。私は約20秒遅すぎました! –

+2

私はむしろ、#inject:into: 'はsmalltalkがLispからインスピレーションを得ているので、' reduce'に相当すると言っています:) – mathk

関連する問題