diff options
Diffstat (limited to 'src/code/2/my_map_red.exs')
-rw-r--r-- | src/code/2/my_map_red.exs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/code/2/my_map_red.exs b/src/code/2/my_map_red.exs new file mode 100644 index 0000000..51f47f8 --- /dev/null +++ b/src/code/2/my_map_red.exs @@ -0,0 +1,17 @@ +defmodule MapReduce do + def reduce([], acc, _), do: acc + def reduce([h|t], acc, f) do + reduce(t, f.(h, acc), f) + end + + def map([], _), do: [] + def map(l, f) do + reduce(l, [], fn(x, acc) -> acc ++ [f.(x)] end) + end +end + +[1, 2, 3, 4, 5] +|> MapReduce.map(fn(x) -> x * 2 end) +|> IO.inspect +|> MapReduce.reduce(0, fn(x, acc) -> acc + x end) +|> IO.inspect |