0

我想在 Haskell 中自己实现严格的折叠功能:这可能吗?我读过 Lisp 宏可用于在很大程度上重新定义语言,使您能够在需要时有效地打破功能范式,并将其塑造成个性化的范式,以最整洁的方式完成工作可能的方式。我实际上并不了解 lisp,所以这可能是不正确的。

当您还考虑到在无类型的 lambda 演算中,数据类型被编码为函数时,我开始怀疑任何东西都可以编码为其他任何东西(GEB的精彩著作对此进行了详细讨论)。在这种情况下,表示严格的评估听起来应该很容易。

那么,您将如何在 haskell 中实现以下内容?

foldl'  = -- ???
foldl1' = -- ???

我怀疑它与 Monads 和/或继续传递有关。

4

1 回答 1

3

你怎么能实施foldl'像这样

Haskell 提供了seq增加严格性的原语,并且为了方便也提供了“bang 模式”。

另请参阅:Haskell 2010 > 预定义类型和类 # 严格评估

于 2011-12-28T08:47:56.783 回答