Skip to content

Commit 6ca1bf4

Browse files
committed
Generalize TreeMap
1 parent 8d5fc48 commit 6ca1bf4

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

exercise_2.31.exs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
defmodule TreeMap do
2+
def map(_f, []), do: []
3+
def map(f, [head | tail]), do: [map(f, head) | map(f, tail)]
4+
def map(f, elt), do: f.(elt)
5+
end
6+
7+
defmodule SquareTree do
8+
def run(tree), do: TreeMap.map(&(&1 * &1), tree)
9+
end
10+
11+
ExUnit.start
12+
13+
defmodule SquareTreeTests do
14+
use ExUnit.Case, async: true
15+
16+
test "it squares all elements in a tree" do
17+
tree = [1, [2, [3, 4], 5], [6, 7]]
18+
expected = [1, [4, [9, 16], 25], [36, 49]]
19+
assert SquareTree.run(tree) == expected
20+
end
21+
end

0 commit comments

Comments
 (0)