I have to implement the Map function using only the foldRight, foldLeft and unfold. This means that I have to loop through every element in the list and apply a function f to it.
I have declared my own list as follow:
abstract class IntList
case class Nil() extends IntList
case class Cons(h: Int, t: IntList) extends IntList
And I’ve implemented the foldRight, foldLeft and unfold functions.
and the implementation of the new map function:
def map(ls: IntList, f: Int => Int): IntList = // ??
I’ve been thinking for a while now, but I don’t have a clue where to begin. I may not use recursion in the map function. I’m pretty sure that I have to combine the power of fold and unfold together. Unfold returns a IntList, which is the return type of map. But I’m not sure what I have to give with this function.
Anyone has a clue? 🙂
Match the types, fill in the arguments to match.
For instance, if you are going to use
foldRight, thenBmust beIntList, because that’s the type returned bymap. Now fill in the arguments tofoldRightwith whatever values you have that match the types.