如何将Haskell中具有匿名功能的折叠重写为常规功能?

Noobie

我正在尝试自学使用Haskell进行函数式编程。

我很难理解currying和lambda。

此功能生成列表的前缀列表(输出列表的列表)。

foldr (\element accumulator -> [] : map (element:) accumulator) [[]]

我正在尝试将其重写为不带lambda的常规函数​​,以帮助我了解lambdas的工作原理。我该怎么办?我被困住了。我需要助手功能吗?谢谢。

卢基

是的,您将需要一个辅助功能。where子句是放置这样的助手的好地方。where子句附加到定义,所以我将需要命名您的函数(我已经命名了inits)。首先将表达式逐字移开。

inits :: [a] -> [[a]]
inits = foldr helper [[]]
    where
    helper = \element accumulator -> [] : map (element:) accumulator

然后,您可以将右侧的lambda参数移至左侧的参数绑定,这意味着同一件事:

inits :: [a] -> [[a]]
inits = foldr helper [[]]
    where
    helper element accumulator = [] : map (element:) accumulator

(您也可以只执行一个参数:

    helper element = \accumulator -> [] : map (element:) accumulator

这些都是等效的。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将箭头功能更改为常规功能?

如何将Utf-8中的webscrapped图像链接编码为ASCII,但仍具有功能链接?

折叠Haskell中的功能列表

如何将Java组件集成到Eclipse作业中(具有进度监视功能)?

如何将CSS限制为具有拖放功能的数据表中的特定列

如何将Oracle特定功能TO_NUMBER重写为ANSI SQL

URL将具有变量的子域重写为具有变量的常规域

如何将Entity Framework Core数据库测试为具有大量行插入功能的InMemory

Haskell中具有LHS和RHS功能的功能定义如何/为什么起作用?

如何将匿名功能插入扩展类?

将所有Firebase Cloud功能重写为托管

在Haskell中读取数字的常规功能

如何从具有匿名功能的div中删除事件侦听器

对象如何在Node.js中具有匿名功能

匿名功能与常规功能的性能/优化

如何从扩展功能中的匿名功能访问“ this”?

如何将具有切换功能的状态组件转换为 reactjs 中的无状态组件?

如何将具有自动返回类型的功能从头文件包含到多个cpp文件中

如何将箭头函数重写为常规函数并绑定上下文?

将匿名功能分解为术语

具有匿名功能的array_walk

具有功能或匿名功能的Python map / filter / reduce

如何将具有Lambda功能的tesseract压缩文件部署到AWS Lambda

如何将 FieldArray 与可以具有其他功能的组件一起使用

如何将CGO用于具有条件内联功能的头文件?

如何将具有未来功能的Observable映射到Future?

如何将XML绑定到WPF,并具有CRUD功能?

如何将模型绑定到具有筛选结果功能的下拉列表输入?

如何将推力:: device_vector <int>转换为具有原始指针的功能