2013-04-25 18 views
2

SUBSEQ:Clojure中使用SUBSEQ

(subseq (apply sorted-set (range 10)) > 5 < 7) 
    ; (6) 

這我理解 - 但

(subseq (apply sorted-set (range 10)) < 5 < 7) 

也給(6),儘管(6不低於5)。有人可以解釋在應用subseq時究竟發生了什麼嗎?

回答

2

當你調用

(subseq (apply sorted-set (range 10)) < 5 < 7) 

subseq首先創建一個序列s開始start-key,這是5,所以s變得(5, 6, 7, 8, 9)

然後subseq使用take-while使用end-testend-key< 7),但首先檢查是否新的序列的第一個元素s fullfills start-teststart-key< 5)。如果沒有,則不包含在結果序列中。

subseq調用take-while與序列(6, 7, 8, 9),結果是6

所以subseq只檢查一個元素爲< 5,這是5本身。

我希望對你有意義:-)

此外,您可以隨時看在documentation源。