I am going through the exercises of learn-reasonml-workshop, it’s been going well and I feel good about finally getting comfortable with the language after previously only reading about it.
In the 21st exercise the task is two implement Map
, Iter
and Filter
functions, using List.fold_left
.
/* Now let’s use List.fold_left to write some other useful List functions. */
I have managed to implement Iter
and Filter
using List.fold_left
, but I can’t find a way to do it for Map
, given the defined signature:
let map: ('a => 'b, list('a)) => list('b);
I did manage to write an implementation without fold_left
:
let map = (fn: 'a => 'b, xs: list('a)) : list('b) => {
let rec aux = xs =>
switch (xs) {
| [] => []
| [y, ...ys] => [fn(y), ...aux(ys)]
};
aux(xs);
};
But, if someone knows how to do this with fold_left
I would like to have a look at the implementation.