7得票2回答
Haskell repa - 如何减少数组并返回索引?

在GNU Octave中,这段代码为 - [e, ix] = min(X); 将返回最小元素及其位置。 如何在repa中使用任意二进制函数实现此功能? 以下是我想到的方法: min x = z $ foldl' f (e,0,0) es where (e:es) = to...

9得票6回答
函数式语言中fold/reduce的实际应用

Fold(也称为reduce)是一种非常重要的高阶函数。 Map可以用fold来表达(见此处)。但对我来说,这听起来更像是学术性的而不是实际应用的。一个典型的用例是获得数字的总和、乘积或最大值,但这些函数通常接受任意数量的参数。那么当(+ 2 3 5)可以正常工作时,为什么要写(fold + ...

13得票1回答
提前终止单子折叠

我写了这个来提前结束一个单子叠加(monadic fold):myfoldM :: (Monad m) => (a -> b -> m (Maybe a)) -> a -> [b] -> m (Maybe a) myfoldM _ a...

11得票3回答
Spark中的折叠操作是如何工作的?

下面是一个Scala示例,展示了Spark fold操作的用法:val rdd1 = sc.parallelize(List(1,2,3,4,5), 3) rdd1.fold(5)(_ + _) 这会产生输出35。有人能详细解释一下如何计算出这个输出吗?

202得票3回答
缩减、折叠还是扫描(左/右)?

何时应该使用reduceLeft、reduceRight、foldLeft、foldRight、scanLeft或scanRight? 我想要一个它们之间差异的直觉/概述-可能包括一些简单的例子。

11得票2回答
Ruby - 测试每个数组元素,获取一个结果

我想要一行代码来测试数组中的每个元素是否为整数,并返回true/false。如果数组中的任何一个元素不是整数,则应该返回false,否则返回true。这是我的尝试: ```ruby array.all? {|x| x.is_a? Integer} ```>> ([2,1,4].m...

35得票4回答
为什么Option没有fold方法?

我想知道为什么scala.Option没有定义一个像这样的fold方法:fold(ifSome: A => B , ifNone: => B) 等同于map(ifSome).getOrElse(ifNone) 有没有更好的方法来替代使用 map + getOrElse?

15得票5回答
请用最简单、不带专业术语的英语解释“fold的通用属性”是什么?

我正在阅读《Real World Haskell》,其中提到了一个免费的PDF文件"A tutorial on the universality and expressiveness of fold"。该文指出,“fold”是“通用”的。我对他对“通用”的定义感到困惑,希望听听那些已经花时间消...

10得票4回答
如何在一个急切求值的编程语言中使用foldl实现zip功能

我认识一个Clojure程序员最近说过,可以用Clojure的reduce(Haskell的foldl')实现很多序列函数,但不幸的是,没有办法只用reduce来实现(map list xs ys)(这是Haskell的zip)。 现在,我已经了解到folds的普遍性,所以我很确定这不是真的...

8得票3回答
foldl和foldr函数组合 - Haskell

所以,我真的很费尽心思地试图理解foldl.foldr组合。以下是一个示例: (foldl.foldr) (+) 1 [[1,2,3],[4,5,6]] 结果是22,但这里真正发生了什么? 在我看来,它看起来像是这样的:foldl (+) 1 [6,15]。我的疑问与foldr部分有关...