我想在Haskell中自己实现严格的折叠功能:这可能吗?我已经读过Lisp宏可以用来在很大程度上重新定义语言,让你有能力在你需要的时候有效地打破功能范式,并将其塑造成一个个性化的范例,让你在最好的工作中完成工作。方式可能。我实际上并不知道口齿不清,所以可能不正确。
当你还考虑到在无类型的lambda演算数据类型被编码为函数时,我开始怀疑任何东西都可以被编码为其他东西(精彩的书GEB详细讨论了这一点)。在这种情况下,表示严格的评估听起来应该很容易。
那么,您将如何从haskell中实现以下内容?
foldl' = -- ???
foldl1' = -- ???
我怀疑它与Monads和/或Continuation Passing有关。
答案 0 :(得分:3)
如何实施foldl'
? Like this
Haskell提供seq
原语用于添加严格性,并提供“爆炸模式”以方便使用。
另请参阅:Haskell 2010 > Predefined Types and Classes # Strict Evaluation