验证列表的所有元素是否相等

时间:2015-09-08 06:38:41

标签: list clojure equality

我有一个案例,我需要检查列表中的所有字符串元素是否相等,并且我试图弄清楚最惯用的解决方案是什么样的。我当前的方法是,将class="l-row"应用于列表,检查每个元素是否等于第一个,然后使用'='减少结果布尔列表:

map

显然,这不是一个很好的解决方案。是否有更多的“clojure风格”解决方案,甚至更简单的方法,我还没有看到?

2 个答案:

答案 0 :(得分:14)

您可以使用以下内容:

(apply = string-list)

答案 1 :(得分:3)

正如@Symfrog所回答,使用apply=看起来效果最佳。

(apply = string-list)

也许看起来可以使用distinct函数或set,但是,这些并不是一个好主意,因为这些不能用于无限序列,尽管正确的答案会很快回复

;; works for small sequence, however, will not work for infinite sequence like (range)
(= 1 (count (distinct string-list))) ; bad idea
(= 1 (count (into #{} string-list))) ; bad idea