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时究竟发生了什么吗?
SUBSEQ:Clojure中使用SUBSEQ
(subseq (apply sorted-set (range 10)) > 5 < 7)
; (6)
这我理解 - 但
(subseq (apply sorted-set (range 10)) < 5 < 7)
也给(6),尽管(6不低于5)。有人可以解释在应用subseq时究竟发生了什么吗?
当你调用
(subseq (apply sorted-set (range 10)) < 5 < 7)
subseq
首先创建一个序列s
开始start-key
,这是5
,所以s
变得(5, 6, 7, 8, 9)
。
然后subseq
使用take-while
使用end-test
和end-key
(< 7
),但首先检查是否新的序列的第一个元素s
fullfills start-test
与start-key
(< 5
)。如果没有,则不包含在结果序列中。
subseq
调用take-while
与序列(6, 7, 8, 9)
,结果是6
。
所以subseq
只检查一个元素为< 5
,这是5
本身。
我希望对你有意义:-)
此外,您可以随时看在documentation源。