【发布时间】:2021-07-09 03:08:27
【问题描述】:
我的数据类型 Pair 定义为
data Pair a b = Pair a b
我想把它做成一个幺半群。这是我的定义。
instance (Monoid a,Monoid b) => Monoid (Pair a b) where
mempty = Pair mempty mempty
mappend (Pair x1 y1) (Pair x2 y2) = Pair (mappend x1 x2) (mappend y1 y2)
但是,我收到以下错误。
foldable.hs:3:10: error:
• Could not deduce (Semigroup (Pair a b))
arising from the superclasses of an instance declaration
from the context: (Monoid a, Monoid b)
bound by the instance declaration at foldable.hs:3:10-49
• In the instance declaration for ‘Monoid (Pair a b)’
|
3 | instance (Monoid a,Monoid b) => Monoid (Pair a b) where
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
出了什么问题?
【问题讨论】:
-
小问题:
mappend = (Pair x1 y1) (Pair x2 y2) = ...中的第一个等号应该被删除。