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`

, then `B`

must be `IntList`

, because that's the type returned by `map`

. Now fill in the arguments to `foldRight`

with whatever values you have that match the types.