2013-06-30 10 views
13

Có cách nào tốt hơn so với những điều sau đây:Số có giảm theo khoảng thời gian trong Clojure không?

(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)))) 

Trong sử dụng:

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

Tôi không muốn sử dụng range, ví dụ, bởi vì đó là xây dựng một chuỗi lười biếng.

Trả lời

27

Có cách nào tốt hơn so với những điều sau đây:

Yes.

(<= 5 8 8.5) 

Nó hoạt động với bất kỳ số lượng đối số nào và kiểm tra xem chúng có được sắp xếp hay không. Với 3 đối số, đó là những gì bạn đang tìm kiếm.

+2

Cũng đáng chú ý, bạn có thể đọc phiên bản variadic của toán tử so sánh là "tăng dần", "giảm dần", "tăng dần nghiêm ngặt" và "giảm dần nghiêm ngặt". –

+0

Cảm ơn! Đây là cách tốt để chứng minh câu trả lời của Blacksad: '(bản đồ # (<= 2% 4) [1 2 3 4 5])' –

+0

@DavidJames Thật vậy. – Blacksad