2013-06-30 3 views
13

Есть ли лучший способ, чем следующее:Число попадает в интервал в Clojure?

(defn in-interval? 
    "Returns a predicate that tests if its argument falls in 
    the inclusive interval [a, b]." 
    [a b] 
    (fn [x] (and (>= x a) (<= x b)))) 

При использовании:

((in-interval? 5 8) 5.5) ; true 
((in-interval? 5 8) 9) ; false 

Я не хочу использовать range, например, потому, что создает ленивую последовательность.

ответ

27

Есть ли лучший способ, чем следующее:

Yes.

(<= 5 8 8.5) 

Он работает с любым количеством аргументов и проверяет, заказаны ли они. С тремя аргументами это то, что вы ищете.

+2

Также стоит отметить вариационные версии операторов сравнения как «восходящие», «нисходящие», «строго восходящие» и «строго снижающиеся». –

+0

Спасибо! Это хороший способ продемонстрировать ответ Blacksad: '(map # (<= 2% 4) [1 2 3 4 5])' –

+0

@DavidJames Действительно. – Blacksad

Смежные вопросы