gpt4 book ai didi

scala - 为什么 HashMap 不是半群,而 Map 是?

转载 作者:行者123 更新时间:2023-12-03 10:55:05 25 4
gpt4 key购买 nike

def foo(a: Map[String, Int], b: HashMap[String, Int]) {
// okay
val ab = a |+| b

// value |+| is not a member of scala.collection.immutable.HashMap[String,Int]
val ba = b |+| a
}

为什么 HashMap 不是半群,而 Map 是?来自面向对象的背景,我会期望 HashMap 与 Map 一样强大吗?

最佳答案

因为 Semigroup是不变的,并且没有专门为 HashMap 定义的实例, 只是 Map .不变性基本上意味着 |+|语法不能使用 Semigroup Map 的实例在推断为 HashMap 的类型上,即使 HashMapMap 的子类型.

在某些情况下,Scalaz 类型类不必要地保持不变。但这不是这些情况之一。因为|+|的签名函数、方差(co- 或 contra-)没有多大意义,因此类型类在其最大一般性方面是正确的。

关于scala - 为什么 HashMap 不是半群,而 Map 是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18493537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com