2011-08-11 80 views
3

我想定義在juxt中使用的函數列表,但是我在實現時遇到了問題。clojure,使用函數列表

繼承人的我想要的一個例子:

(defn sin [n] (Math/sin n)) 
(defn cos [n] (Math/cos n)) 
((juxt sin cos) 4) 
>> [-0.7568024953079282 -0.6536436208636119] 

現在不是說((juxt sin cos) 4)我更願意說((juxt trig) 4)其中 (def trig [sin cos])。我曾嘗試過((apply juxt trig) 4)和其他一些東西,但似乎沒有任何關係。謝謝!

回答

5

apply似乎很好地工作:

user=> ((juxt sin cos) 4) 
[-0.7568024953079282 -0.6536436208636119] 
user=> ((apply juxt trig) 4) 
[-0.7568024953079282 -0.6536436208636119] 
+0

thx ...下一次..檢查repl是乾淨的,經驗教訓 – ChrisR

5

我認爲你有一個正確的解決方案。對我來說它是有效的:

Clojure 1.2.1 
user=> (defn sin [n] (Math/sin n)) 
#'user/sin 
user=> (defn cos [n] (Math/cos n)) 
#'user/cos 
user=> (def trig [sin cos]) 
#'user/trig 
user=> ((apply juxt trig) 4) 
[-0.7568024953079282 -0.6536436208636119]