我必须仅使用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/