diff --git a/maps/myenum.exs b/maps/myenum.exs index 97f6405..2cbd775 100644 --- a/maps/myenum.exs +++ b/maps/myenum.exs @@ -30,7 +30,21 @@ defmodule MyEnum do :ok end + # Filters the enumerable, i.e. returns only those elements for which fun returns a truthy value. + def filter([], _fun) do + # do nothing -> This is wrong. Return an empty array instead. + [] + end + # filter using if ... do ... else ... end + def filter([head|tail], fun) do + if fun.(head) do + [head|filter(tail, fun)] + else + filter(tail, fun) + end + end + # split # take end