欢迎!有关这方面的一些更多信息,请参阅关于页面。
嗨!
定义filter-keys/filter-vals函数,该函数接受一个map和一个谓词,并返回满足谓词的map,是否有意义?
例如,有一个名为medley的实用库,它为map定义了这样的函数,如filter-keys、filter-vals以及一些其他函数。
看起来缺少这种函数的理由。使用core库,我可以使用select-keys查询一个map,并使用一个键向量来获取具有所需键的map(如果map中有这些键),但没有其他更高级的map查询功能,除了功能强大的reduce-kv函数,它将条件和新map构建混合在一起。
Clojure集合库定义了一个set/select函数,允许在集合上应用谓词并获取结果集。
有什么想法可以解释为什么没有类似函数为map提供支持吗?
总的来说,大多数Clojure的映射函数将映射作为索引来处理,通过利用和保留基于键的O(~1)访问性能进行操作,而不是将映射作为条目序列的集合。提供需要完整遍历和修改映射的函数与这种处理方法略有矛盾。我不记得过去考虑过包括这些函数。