2013-04-25 64 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源。