Haskell:如何为构造函数定义构造函数类Foldable 的实例

问题描述

我刚刚开始使用 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 函数时应忽略多重性。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)