使用 clojure 集合作为组合函数的 items 参数似乎是合理的。然而,在 {{(combinations some-set 1)}} 的情况下,因为 Clojure 的 distinct 函数(当 {{(= t 1)}} 时被调用)不支持集合,所以会抛出异常。这个问题可以通过在调用 combinations 之前将集合转换为 seq 来解决。
对于所有其他函数,通过将 {{all-different?}} 扩展为包含 {{set?}} 检查,可以使函数略微更高效(通过避免线性的 {{distinct?}} 扫描)。