问题标签 [foldable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2709 浏览

haskell - 可折叠、Monoid 和 Monad

考虑以下签名foldMap

这与“绑定”非常相似,只是交换了参数:

因此,在我看来,和之间必须存在某种关系Foldable,但我在超类中找不到它。大概我可以将其中的一个或两个转换为另一个,但我不确定如何。MonoidMonad

可以详细说明一下关系吗?

0 投票
1 回答
1000 浏览

haskell - sum 函数中的不同类型

我是 Haskell 的新手,所以这可能是一个愚蠢的问题。我正在读一本书,上面写着:type sum应该显示sum :: (Num a) => [a] -> a。而不是该消息是sum :: (Num a, Foldable t) => t a -> a. 正如我在https://www.haskell.org/hoogle/?hoogle=Sum中看到的那样,这种差异是由于 - 我认为 - 存在两个不同的 sum 函数。也许这类似于 Java 中的多态性,我才刚刚开始,我不知道 Haskell 是如何工作的。

所以我的问题是:我如何使用 sum 函数来sum :: (Num a) => [a] -> a代替另一种类型?你能解释一下这里发生了什么吗?

0 投票
1 回答
927 浏览

haskell - 没有由 lambda 内的长度引起的可折叠实例

这里的第一个问题,完全是haskell的菜鸟,所以请善待我:)

我在玩这个haskell练习的第6题

最后用这段代码找到了解决方案(或者我希望的类似的东西)

我喜欢强调的部分是函数'rpt',它计算一个字符在字符串中重复的次数,例如:“aaba”-> [3313](3来自字母a,它重复3次)​​“aaccva”-> [332213]

后来我尝试使用 lambda 和 map 来制作函数,结果如下:

起初 ghci 告诉我使用 FlexibleContext 来允许这样做,但如果我这样做了,它会产生:

在这里我被卡住了,我无法理解发生了什么......修复这个功能需要什么?

0 投票
1 回答
159 浏览

haskell - If map can be defined using Foldable, why is Functor not mentioned in definition of Foldable

I read that, map can be defined using foldr, i.e. it is a primitive recursive function. At least for lists.

Now my question: Why is Functor not a sub type class of Foldable? And if fmap can only be defined in terms of foldr for lists, what makes them special?

Looking at a definition of map with foldr:

I could use Monoids to get to:

But sadly I'm not much enough of a Haskell magician to get away with cons.

0 投票
1 回答
179 浏览

haskell - Why does `fmap sum Just` typecheck?

We know fmap is fmap :: Functor f => (a -> b) -> f a -> f b and sum is sum :: (Num a, Foldable t) => t a -> a, but the code below confuse me.

why?

0 投票
1 回答
228 浏览

haskell - 模棱两可的出现'foldMap'

我正在为以下数据结构实现可折叠:

当我实现 fold 和 foldMap 时:

我会收到以下错误:

当我删除 foldMap 的定义时,我会收到以下警告:

当我实现该功能时,我会得到它已经存在的错误,但是当我不实现该功能时,我会收到该功能丢失的警告?我究竟做错了什么?

0 投票
2 回答
243 浏览

haskell - 会不会是 (Alternative f, Foldable f) => Monad f?

以下类型检查:

这实际上是一个有效的Monad实例吗?如果是,为什么不使用它?如果不是,它是否违反了任何法律或其他法律?我没有证明这个规律成立,但我也找不到反例。

0 投票
1 回答
148 浏览

haskell - 在函数中使用 foldl

我对在 Haskell 中使用 foldl 的类型定义有疑问,我有以下类型:

foldl 使用以下函数定义:

当我尝试将我的模块加载到ghci中时,它会引发错误:

我试图通过按照建议为函数提供类型注释来纠正这个问题:

我想知道如何在这里提供适当的类型约束,如果我使用Foldable Client a,它表示它期望Foldable.

我也尝试过类型定义:

引发错误:

0 投票
2 回答
124 浏览

haskell - 如何在 Haskell 中找到“无限”可折叠结构的第 k 个元素?

我想定义一个safeIndex适用于Foldable类型的函数

但它不适用于无限列表。为了foldr在中间停止,我认为我们必须确定它是否应该只用 的第一个参数停止step,这似乎是不可能的。

是否可以修复该功能以使其适用于无限结构?如果不是,我们应该限制哪些类型类t

0 投票
1 回答
316 浏览

haskell - 可折叠的 IntSet

对我来说,整数集似乎是一种可折叠的数据结构。为什么Data.IntSet不是一个实例Foldable

我的实际意图是findIntSet. 如何实现 find for Data.IntSet