2024 Clojure状态调查!中分享你的想法。

欢迎!请查看关于页面以获取更多有关如何使用本站的信息。

+2
文档
重新分类

keysvals的文档字符串表明,这些函数可以应用于映射。但,这些函数显然也可以作用于映射条目的序列。

例如,这行代码可以正常工作

(keys (filter (comp odd? val) {:a 1 :b 2 :c 3}))

上述程序是有效的吗?keysvals保证在映射条目的序列上也能工作吗?

2 个答案

+2

被选中
 
最佳答案

是的,这是合法的,你可以依赖它。

我也提交了一个问题报告,建议更新文档字符串或在类型中使其更明确。

https://clojure.atlassian.net/browse/CLJ-2592

我们能否期待`KVReduce`协议? `(reduce-kv assoc {} (filter (comp odd? val) {:a 1}))`
已经有一个IKVReduce协议了。问题是Seqable或ISeq无法通用地扩展,因为不是所有的coll或seq都是KV。但是有些地方(比如IPersistentMap)可以被标记为EntrySeqable(seqs to entries),这可能很有用。我们遇到过这个问题多次。
0

来自Alex Miller via Twitter。

https://twitter.com/puredanger/status/1330570384773681152?s=21

“这是合法的,我们将继续维持这项功能”

...