【发布时间】:2026-02-17 16:50:01
【问题描述】:
我正在尝试为使用 Data.Map 作为后端的概率单子编写 Eric Kidd's 和 Sigfpe's 代码,但我遇到了 Functor 实例。
我有一个数据类型是概率表:
newtype Prob f a = Prob {table :: Map a f}
a associate 类型变量的每个值是概率,它是Floating f => f 类型。实例应由:
instance (Floating f) => Functor (Prob f) where
fmap f (Prob tab) = Prob (mapKeysWith (+) f tab)
但mapKeysWith 的类型为(Ord k2) => Map k1 a -> (a -> a -> a) -> (k1 -> k2) -> Map k2 a。我无法在实例中强制执行 Ord 约束,因此出现类型错误。
有没有简单的方法解决这个问题?
【问题讨论】:
标签: haskell map instance typeclass functor