假設你有元數1,2的三種功能和3如下:clojure能否評估一系列混合函數並在需要時返回部分函數?
(defn I [x] x)
(defn K [x y] x)
(defn S [x y z] (x z (y z)))
是否Clojure的專門制定了評價的評價函數或成語:
(I K S I I) as (I (K (S (I (I)))))
返回元數2的parital功能?
我在考慮創建一個宏,它可以將上面的簡單函數定義並將它們展開爲可以返回部分結果的多元函數。如果已經有內置或慣用的方法來實現這一點,我不想創建宏。
這裏是擴展宏想什麼爲實現上述功能:
(defn I
([x] I x)
([x & more] (apply (I x) more)))
(defn K
([x] (partial K x))
([x y] x)
([x y & more] (apply (K x y) more)))
(defn S
([x] (partial S x))
([x y] (partial S x y))
([x y z] (x z (y z)))
([x y z & more] (apply (S x y z) more)))
剛剛發現這一點,並認爲它*可能*是完美的,如果沒有別的,至少有幫助... http://alfredodinapoli.wordpress.com/2011/03/16/a-bit-of -clojure-magic-and-high-order-functions-are-served/ – 2012-08-12 22:39:13