【发布时间】:2012-03-25 07:53:20
【问题描述】:
我必须仅使用 foldRight、foldLeft 和展开来实现 Map 功能。这意味着我必须遍历列表中的每个元素并对其应用函数 f。
我已经声明了我自己的列表如下:
abstract class IntList
case class Nil() extends IntList
case class Cons(h: Int, t: IntList) extends IntList
我已经实现了 foldRight、foldLeft 和展开功能。
以及新地图功能的实现:
def map(ls: IntList, f: Int => Int): IntList = // ??
我已经考虑了一段时间,但我不知道从哪里开始。我可能不在 map 函数中使用递归。我很确定我必须将折叠和展开的力量结合在一起。 Unfold 返回一个 IntList,它是 map 的返回类型。但我不确定我必须使用此功能提供什么。
有人知道吗? :)
【问题讨论】:
-
提示:你只需要 either foldLeft or foldRight or 展开。最简单的解决方案是使用 foldRight。
-
这是一个非常标准的任务。如果您不知道如何开始,请在 Google 上搜索。
-
我已经用谷歌搜索了一段时间,但我找不到关于这个问题的类似主题。我知道这是一项标准任务,应该不难,但我只需要一个起点。
-
@AndreasRossberg 如何使用
unfold实现地图?
标签: scala map functional-programming