问题标签 [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 - 可折叠、Monoid 和 Monad
考虑以下签名foldMap
这与“绑定”非常相似,只是交换了参数:
因此,在我看来,和之间必须存在某种关系Foldable
,但我在超类中找不到它。大概我可以将其中的一个或两个转换为另一个,但我不确定如何。Monoid
Monad
可以详细说明一下关系吗?
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
代替另一种类型?你能解释一下这里发生了什么吗?
haskell - 没有由 lambda 内的长度引起的可折叠实例
这里的第一个问题,完全是haskell的菜鸟,所以请善待我:)
我在玩这个haskell练习的第6题
最后用这段代码找到了解决方案(或者我希望的类似的东西)
我喜欢强调的部分是函数'rpt',它计算一个字符在字符串中重复的次数,例如:“aaba”-> [3313](3来自字母a,它重复3次)“aaccva”-> [332213]
后来我尝试使用 lambda 和 map 来制作函数,结果如下:
起初 ghci 告诉我使用 FlexibleContext 来允许这样做,但如果我这样做了,它会产生:
在这里我被卡住了,我无法理解发生了什么......修复这个功能需要什么?
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
.
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?
haskell - 模棱两可的出现'foldMap'
我正在为以下数据结构实现可折叠:
当我实现 fold 和 foldMap 时:
我会收到以下错误:
当我删除 foldMap 的定义时,我会收到以下警告:
当我实现该功能时,我会得到它已经存在的错误,但是当我不实现该功能时,我会收到该功能丢失的警告?我究竟做错了什么?
haskell - 会不会是 (Alternative f, Foldable f) => Monad f?
以下类型检查:
这实际上是一个有效的Monad
实例吗?如果是,为什么不使用它?如果不是,它是否违反了任何法律或其他法律?我没有证明这个规律成立,但我也找不到反例。
haskell - 在函数中使用 foldl
我对在 Haskell 中使用 foldl 的类型定义有疑问,我有以下类型:
foldl 使用以下函数定义:
当我尝试将我的模块加载到ghci
中时,它会引发错误:
我试图通过按照建议为函数提供类型注释来纠正这个问题:
我想知道如何在这里提供适当的类型约束,如果我使用Foldable Client a
,它表示它期望Foldable
.
我也尝试过类型定义:
引发错误:
haskell - 如何在 Haskell 中找到“无限”可折叠结构的第 k 个元素?
我想定义一个safeIndex
适用于Foldable
类型的函数
但它不适用于无限列表。为了foldr
在中间停止,我认为我们必须确定它是否应该只用 的第一个参数停止step
,这似乎是不可能的。
是否可以修复该功能以使其适用于无限结构?如果不是,我们应该限制哪些类型类t
?
haskell - 可折叠的 IntSet
对我来说,整数集似乎是一种可折叠的数据结构。为什么Data.IntSet
不是一个实例Foldable
?
我的实际意图是find
在IntSet
. 如何实现 find for Data.IntSet
?