clojure,使用函数列表

时间:2011-08-11 04:37:38

标签: clojure

我想定义一个在juxt中使用的函数列表,但是我在实现它时遇到了麻烦。

以下是我想要的一个例子:

(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)和其他一些事情,但似乎没有什么可以坚持下去。谢谢!

2 个答案:

答案 0 :(得分:5)

apply似乎工作正常:

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

答案 1 :(得分: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]