问题标签 [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 投票
2 回答
181 浏览

haskell - 为什么我不能在 Haskell 中执行 `null (Just 5)`?

Maybe 的 Hackage 文档将 Foldable 列为 Maybe 的类型类之一。它还列出了以下功能:

它甚至链接到这个函数的实现(来自Foldable):

...这似乎相当合理。它也有效:如果 I import qualified Data.Foldable,我可以foldr在 Maybe 值上使用。

但是,当我尝试调用nullMaybe 时,Haskell 认为我想使用为列表设计的 null:

我知道有isJust,我只是想知道如何调用null任何可折叠的函数。

0 投票
1 回答
250 浏览

haskell - Trie-Set 的可折叠实例

我有一个类似 Set 的数据结构,实现为 Trie,其定义如下:

还有一个如下所示的插入操作:

我可以得到一种foldr看起来像这样的东西:

但我无法弄清楚Foldable. Trie似乎具有所有必要的foldrTrie功能,但我只是无法弄清楚类型。

foldr这是我正在寻找的行为示例:

我无法管理的是类型签名Foldable

我试着让我Trie有第二个类型参数:

这样我就可以做这样的事情:

但我无法弄清楚类型。

提出问题的更一般的方法可能是这样的:如果我有一个只能存储列表的数据结构我是否能够foldr在该数据结构上进行定义,因此它将存储的列表视为每个元素?该数据结构的类型是什么样的?

0 投票
3 回答
96 浏览

python - Python中的traverse_等价物?

Haskell中,我们有traverse_一个函数,它作用于Foldable类型以折叠具有应用函数的结构,丢弃任何结果:

例如,我们可以这样做:

Python相当于什么traverse_?至少对于列表?

0 投票
2 回答
73 浏览

haskell - 无法理解为什么我的类型的 MonoFoldable 无法编译,或者错误消息

我有以下代码:

但是,我从编译器收到以下错误,我无法理解其含义:

据我所知,我的想法似乎是有道理的——毕竟,aRuleSet只是Rules 的容器,它应该允许可折叠性,但有问题的错误消息对我来说没有任何意义。有人可以澄清我在这里未能掌握的内容吗?

0 投票
1 回答
2145 浏览

haskell - Foldable vs Traversable

While studying Applicative deeper, I came to Traversable. Although I already knew Foldable from LYHGG, I haven't seen the former yet, so I started reading the Haskell wiki about Traversable.

While reading it, I understood why Foldable.fold is parallel to Traversable.sequenceA and Foldable.foldMap is parallel to Traversable.traverse.

I've seen also that every Traversable is also a Foldable and a Functor, and sequenceA and traversal have a default implementation in terms of each other:

So, as I have seen in LYHGG that foldMap is a minimal complete definition for Foldable, I thought that, it is parallel to traverse, so fold (which is parallel to sequenceA) would be a minimal complete definition too (which it isn't)... Foldable is not a Functor like Traversable is, so we cannot apply this:

Why isn't every Foldable a Functor, and what would be an instance of Foldable that actually isn't a Functor?

0 投票
2 回答
642 浏览

haskell - How to create a Foldable instance of a type with multiple parameters in Haskell?

I have a data type:

I want to create a Foldable instance of Box and since the Foldable instance has to be given something of kind * -> *, I'll declare the instance as:

Now I can only do something like:

in the definition of foldr but what if instead of operating on s, I want to to something like:

The compiler doesn't let me do this so what is the proper way to go about it?

0 投票
2 回答
599 浏览

haskell - 如何使用 foldr(或 foldMap)实现最小值?

我想用 foldr 或 foldMap 实现最小值。根据练习,它应该有这样的定义:

这听起来很简单,但我不知道我可以用什么代替下面的 X 来使它工作。请帮忙?

你也可以通过向我展示如何使用 foldMap 来获得奖励积分,但这似乎更难。

0 投票
2 回答
452 浏览

haskell - 如何实现 Constant ab = Constant a 的可折叠实例?

我想实现可折叠的

这是我的直接尝试:

我想了解的编译错误部分是:

如您所见,折叠功能a1从我无法访问的常量中获取“幻像类型”(?);我只能访问a.

我该如何解决这个问题?请解释你的解决方案,因为我很困惑。

整个编译错误是:

0 投票
1 回答
572 浏览

haskell - 为什么 Monoid 不是 foldr/foldl 的要求?

我正在看FoldableHaskell 的课程。其中两个方法foldfoldMap需要一个 Monoid 实例。但是foldr或者foldl没有任何这样的约束。

为了foldr/的结果foldl是等价的,它不应该限制给定的折叠函数是关联的吗?有没有同一个列表中 foldr/foldl 的结果不同的例子?

Foldable 实例不应该包装 Monoidal 值吗?还是可折叠更通用?

0 投票
2 回答
292 浏览

haskell - MonoFoldable 我们有什么损失吗?

mono-traversable包中的MonoFoldable似乎能够实现所有常见的可折叠容器等等,例如,Bytestring可以制作同质元组之类的东西,MonoFoldable但不能Foldable。我的问题是,除了需要一些高级 GHC 功能之外,我们是否会丢失任何我们MonoFoldable没有的东西,这使得它对于例如编写者来说稍微有点棘手,并且可能会得到更丑陋的错误消息?Foldable

例如,是否有一些代码在使用Foldable编译时MonoFoldable没有推断出类型?或者其他任何使客户端(不是实例编写器代码)比比简单得多的Foldable东西MonoFoldable