使用'def'在clojure中定义一个函数

时间:2013-03-29 12:24:23

标签: clojure

这是两个函数,它们请求相同的参数并返回相同的布尔类型值。 如:

 (defn Foo1 [x] (< x 3))
 (defn Foo2 [x] (> x -10))

但是当我定义下面的函数时我很困惑:

 (def Foo3 (or Foo1 Foo2))

你们能告诉我它是如何运作的吗?非常感谢你!

2 个答案:

答案 0 :(得分:1)

(defn f [a] a)只是(def f (fn [a] a))

的捷径

如果def绑定的第二个参数是一个函数,那么第一个参数也是函数。

答案 1 :(得分:1)

假设您正在尝试组合条件,您可能需要:

(defn foo3 [x] (or (foo1 x) (foo2 x)))

也就是说,您正在定义一个新函数foo3,其结果是使用相同参数foo1调用foo2x的结果或结果

P.S。在Clojure中以小写命名函数是常规的。