我刚刚开始使用 Haskell,在阅读了Foldable文档后,我试图为构造函数ListBag定义构造函数类 Foldable 的实例,其中:
newtype ListBag a = LB [(a,Int)] deriving (Show,Eq)
为此,我有适用于我的多重集的第一个元素的二元函数 f。这就是我尝试过的:
instance Foldable ListBag where
foldr f z (LB[]) = 0
foldr f z (LB [x]) = f i z where (i,_) = x
foldr f z (LB [x : xs]) = f i foldr f z (LB[xs]) where (i,_) = x
这是不正确的,但我能做到的最好......
知道如何纠正吗?
(是的,f
应该应用该函数忽略多重性。)