7得票3回答
列表推导式中是否创建了任何中间数据结构?

看起来foldr与列表理解进行了某种融合,因此在这个例子中,与foldl相比,它需要更少的内存(11mb)分配。 myfunc = sum $ foldr g acc [ f x | x <- xs ] f x = .. g x y = .. 有人能解释一下如何以及为什么吗?还有懒...

36得票4回答
为什么这个 Haskell 代码在处理无限列表时能够成功工作?

我有一些Haskell代码,它可以正确地处理无限列表,但我不明白为什么它可以成功地这样做。(我修改了我的原始代码 - 它不能处理无限列表 - 并从其他网上的代码中借鉴了一些东西,突然间我发现它可以工作,但不知道为什么)。 myAny :: (a -> Bool) -> [a] -&...

37得票9回答
用于检查集合是否有序的惯用方法

为了学习并进一步探究这个问题,我对检查列表(或集合)是否有序的算法的显式递归形式进行了好奇,并寻求其惯用的替代方法。 (在这里,我通过使用操作符比较和Int类型来简化问题;我想先看看算法再深入探讨其泛化) 基本的递归版本如下(由@Luigi Plinge提供):def isOrdered(l...

92得票11回答
foldr是如何工作的?

有人能解释一下 foldr 怎么工作的吗? 以这些例子为例:Prelude> foldr (-) 54 [10, 11] 53 Prelude> foldr (\x y -> (x+y)/2) 54 [12, 4, 10, 6] 12.0 我对这些执行过程感到困惑。有什么建议吗?

55得票3回答
函数式编程、Scala的map和fold left

有哪些关于fold left的好教程? 原始问题,已从删除状态恢复以提供其他答案的上下文: 我正在尝试实现一种方法来查找矩形、圆形、位置和组的边界框,这些都扩展自Shape。组基本上是一组形状的数组。abstract class Shape case class Rectangle(w...

7得票3回答
使用foldr实现take函数

这是我使用 `foldr` 的版本: take。 myTake n list = foldr step [] list where step x y | (length y) < n = x : y ...

98得票4回答
函数式编程中reduce和foldLeft/fold的区别是什么(尤其是在Scala和Scala API中)?

Scala和Spark、Scalding等框架为什么同时拥有reduce和foldLeft方法?那么reduce和fold有什么区别呢?

8得票3回答
iOS纸折(折纸/手风琴)效果动画,带手动控制

我正在寻找如何在我的iOS项目中实现流行的“纸折/折纸”效果的技巧。 我已经了解到一些项目,例如: https://github.com/xyfeng/XYOrigami 但是它们只提供了“动画”效果,没有手动控制开启动画的选项。 我努力分析该项目并得出所需功能,但是没有成功。 更确切地...

12得票3回答
如何使用可变参数模板在C++11中生成左关联表达式(也称为左折叠)?

我希望使用c++模板来聚合(折叠)多个参数,使用二进制运算。这样的模板可以按以下方式使用: fold<add>(100,10,5) 展开为 add(add(100, 10), 5)。上述特定的展开方式是“左折叠”。展开 add(100, add(10, 5)) 是“右折叠”。假设a...

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

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