Lio*_*let 3 intersection list clojure
我需要一个函数,它接受两个列表,例如 (1 2 3 4) 和 (2 3 4 5),并返回它们的交集,即 (2 3 4)。我写了一个可以运行的函数,但它有 8 行长,而且非常“不像 Clojure”,因为我对这项运动还很陌生。我知道那里有一些优雅的东西,甚至可能是一个 Clojure 关键字可以解决整个问题。比较只需在顶层进行,而不是递归整个列表结构。先感谢您。
如果您不介意结果集的顺序,可以使用内置的集合操作库。
(require '[clojure.set :as set])
(set/intersection (set '(1 2 3 4) ) (set '( 3 4 5))) ; ==> returns #{4 3}
Run Code Online (Sandbox Code Playgroud)