在Clojure中是否有一种简单/惯用的方法来测试给定序列是否包含在另一个序列中?类似的东西:
(subseq? [4 5 6] (range 10)) ;=> true
(subseq? [4 6 5] (range 10)) ;=> false
(subseq? "hound" "greyhound") ;=> true
(其中subseq?
是一个理论函数,可以完成我所描述的)
似乎核心或其他Clojure库中没有这样的函数......假设这是真的,是否有一种相对简单的方法来实现这样的函数?
答案 0 :(得分:6)
(defn subseq? [a b]
(some #{a} (partition (count a) 1 b)))
答案 1 :(得分:2)
(defn subseq? [target source]
(pos? (java.util.Collections/indexOfSubList (seq source) (seq target))))