gpt4 book ai didi

haskell - 如何使用foldr定义 map ?

转载 作者:行者123 更新时间:2023-12-04 22:21:05 24 4
gpt4 key购买 nike

我最近开始学习 Haskell,在我的一项作业中,我有一个练习,要求根据 foldr 定义 map 函数,但我终生无法弄清楚如何做到这一点。我在堆栈溢出中搜索了解决方案并遇到了这个:

How would you define map and filter using foldr in Haskell?

然而,这里的解决方案涉及使用 lambdas,我还没有涉及到,我认为因此该练习应该可以在没有 lambdas 的情况下进行(尽管您永远不知道)。

我想最让我困惑的是 map 接受一个一元函数(例如 +1),而 foldr 接受一个二元函数(例如 +),我真的不知道如何让这两者一起工作。

最佳答案

foldr 实际上很简单:给定一个列表(用 :[] 编写),例如

a : (b : (c : (d : [])))

然后将 foldr h x 应用到它会用 :`h`[] 替换每个 x :
a `h` (b `h` (c `h` (d `h` x)))

将其与 map f 列表中的内容进行比较:
f a : (f b : (f c : (f d : [])))

这应该会指导您选择 hx 以便 foldr h x = map f

关于haskell - 如何使用foldr定义 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20358922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com