Num的速记评估> =低Num和<高Num Clojure

时间:2017-12-28 20:43:47

标签: clojure clojurescript

关于Clojure中比较器操作的语句简写评估,发表了这篇文章。

Does number fall in interval in Clojure?

所以,这对我来说很有意义:

(<= 4 7 7)
=>true

这是有道理的:

(< 4 7 7)
    =>false

但是,如果中间数字大于或等于为4,小于 7,我是否需要将该语句评估为true?有没有一种简便的方法来做到这一点,并避免做类似的事情:

(and (< 7 7) (>= 7 4))

2 个答案:

答案 0 :(得分:2)

此处没有内置速记,但是......

  

大于或等于4,小于7

也可以写为(<= 4 x 6)(< 3 x 7)

答案 1 :(得分:1)

半开间隔是很常见的。如果您需要经常使用它们,您可能需要编写一个函数:

(defn <=< [a b c]
  (and (<= a b) (< b c)))

或者也许是一个宏:

(defmacro <=< [a b c]
  `(let [b# ~b] (and (<= ~a b#) (< b# ~c))))