问题标签 [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.
haskell - 为什么我不能在 Haskell 中执行 `null (Just 5)`?
Maybe 的 Hackage 文档将 Foldable 列为 Maybe 的类型类之一。它还列出了以下功能:
它甚至链接到这个函数的实现(来自Foldable
):
...这似乎相当合理。它也有效:如果 I import qualified Data.Foldable
,我可以foldr
在 Maybe 值上使用。
但是,当我尝试调用null
Maybe 时,Haskell 认为我想使用为列表设计的 null:
我知道有isJust
,我只是想知道如何调用null
任何可折叠的函数。
haskell - Trie-Set 的可折叠实例
我有一个类似 Set 的数据结构,实现为 Trie,其定义如下:
还有一个如下所示的插入操作:
我可以得到一种foldr
看起来像这样的东西:
但我无法弄清楚Foldable
. Trie
似乎具有所有必要的foldrTrie
功能,但我只是无法弄清楚类型。
foldr
这是我正在寻找的行为示例:
我无法管理的是类型签名Foldable
:
我试着让我Trie
有第二个类型参数:
这样我就可以做这样的事情:
但我无法弄清楚类型。
提出问题的更一般的方法可能是这样的:如果我有一个只能存储列表的数据结构,我是否能够foldr
在该数据结构上进行定义,因此它将存储的列表视为每个元素?该数据结构的类型是什么样的?
python - Python中的traverse_等价物?
在Haskell中,我们有traverse_
一个函数,它作用于Foldable
类型以折叠具有应用函数的结构,丢弃任何结果:
例如,我们可以这样做:
Python相当于什么traverse_
?至少对于列表?
haskell - 无法理解为什么我的类型的 MonoFoldable 无法编译,或者错误消息
我有以下代码:
但是,我从编译器收到以下错误,我无法理解其含义:
据我所知,我的想法似乎是有道理的——毕竟,aRuleSet
只是Rule
s 的容器,它应该允许可折叠性,但有问题的错误消息对我来说没有任何意义。有人可以澄清我在这里未能掌握的内容吗?
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
?
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?
haskell - 如何使用 foldr(或 foldMap)实现最小值?
我想用 foldr 或 foldMap 实现最小值。根据练习,它应该有这样的定义:
这听起来很简单,但我不知道我可以用什么代替下面的 X 来使它工作。请帮忙?
你也可以通过向我展示如何使用 foldMap 来获得奖励积分,但这似乎更难。
haskell - 如何实现 Constant ab = Constant a 的可折叠实例?
我想实现可折叠的
这是我的直接尝试:
我想了解的编译错误部分是:
如您所见,折叠功能a1
从我无法访问的常量中获取“幻像类型”(?);我只能访问a
.
我该如何解决这个问题?请解释你的解决方案,因为我很困惑。
整个编译错误是:
haskell - 为什么 Monoid 不是 foldr/foldl 的要求?
我正在看Foldable
Haskell 的课程。其中两个方法fold
,foldMap
需要一个 Monoid 实例。但是foldr
或者foldl
没有任何这样的约束。
为了foldr
/的结果foldl
是等价的,它不应该限制给定的折叠函数是关联的吗?有没有同一个列表中 foldr/foldl 的结果不同的例子?
Foldable 实例不应该包装 Monoidal 值吗?还是可折叠更通用?
haskell - MonoFoldable 我们有什么损失吗?
mono-traversable包中的MonoFoldable似乎能够实现所有常见的可折叠容器等等,例如,Bytestring
可以制作同质元组之类的东西,MonoFoldable
但不能Foldable
。我的问题是,除了需要一些高级 GHC 功能之外,我们是否会丢失任何我们MonoFoldable
没有的东西,这使得它对于例如编写者来说稍微有点棘手,并且可能会得到更丑陋的错误消息?Foldable
例如,是否有一些代码在使用Foldable
编译时MonoFoldable
没有推断出类型?或者其他任何使客户端(不是实例编写器代码)比比简单得多的Foldable
东西MonoFoldable
?