我必须仅使用foldRight,foldLeft和unfold实现Map函数。这意味着我必须遍历列表中的每个元素并对其应用函数f。

我声明了自己的清单,如下所示:

abstract class IntList
case class Nil() extends IntList
case class Cons(h: Int, t: IntList) extends IntList

我已经实现了foldRight,foldLeft和unfold函数。

以及新 map 功能的实现:
def map(ls: IntList, f: Int => Int): IntList = // ??

我已经思考了一段时间,但是我不知道从哪里开始。我可能不会在 map 功能中使用递归。我很确定我必须将折叠和展开的力量结合在一起。展开会返回一个IntList,它是map的返回类型。但是我不确定该功能给我什么。

有人知道吗? :)

最佳答案

匹配类型,填写要匹配的参数。

例如,如果要使用foldRight,则B必须为IntList,因为这是map返回的类型。现在,使用与类型匹配的任何值填写foldRight的参数。

关于scala - 在Scala中仅使用foldRight,foldLeft和unfold实现 map 功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9607371/

10-10 22:50