【发布时间】:2021-05-25 00:00:06
【问题描述】:
作为 Haskell 的新手,我想知道如何 1)计算某些东西直到满足某个标准,然后 2)返回计算值。
在我知道的语言中,您会为此使用 while 循环。在 Haskell 中你是怎么做的?
【问题讨论】:
-
Haskell 使用递归代替循环。
-
@Jubobs:我认为您不能说对于一般情况,因为映射、折叠和过滤也用于代替循环。当然,除了更多其他功能甚至功能库。它总是取决于;我想说的是,在第一级工具阵容中,它是映射、过滤、折叠和递归。
-
@phresnel Haskell 的
map、filter和折叠都是作为递归函数实现的……这些函数只是在递归之上添加了一层抽象,但你总是在底部找到递归这一切。 -
@Jubobs:是的,我不否认这一点。但是例如C++ 中的 lambda 被实现为具有函数调用运算符的类;但是您不会建议在 lambda(作为工具)更合适的情况下使用带有函数调用运算符的 类。你会说 Haskell 的 map et al 不如“原始”递归那么惯用和/或可取吗?
-
@phresnel 不。您应该在适当的时候使用
map、filter、foldr等,但我想说的是,归根结底,递归规则所有这些。
标签: haskell while-loop