2

子序列:

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

这我理解——但是

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

也给出 (6),即使 (6 不小于 5)。有人可以解释应用 subseq 时究竟会发生什么吗?

4

1 回答 1

2

你打电话时

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

subseq首先创建一个以s开头的序列start-key,即5,sos变为(5, 6, 7, 8, 9)

然后subseq使用take-whileusingend-testend-key( < 7),但首先检查新序列的第一个元素是否用( )s填充。如果没有,则它不包含在结果序列中。start-teststart-key< 5

subseqtake-while用序列调用(6, 7, 8, 9),结果是6.

所以subseq只检查一个元素< 5,这就是5它本身。

我希望这对你有意义:-)

此外,您可以随时查看文档中的源代码。

于 2013-04-25T14:41:21.993 回答