Slide 29
Slide 29 text
traverse with Macro.postwalk
iex> Macro.postwalk(quote(do: [1, 2, 3] |> Enum.reverse() |> Enum.sum()), fn(ast) -> IO.inspect ast end)
1
2
3
[1, 2, 3]
:Enum
{:__aliases__, [alias: false], [:Enum]}
:reverse
{:., [], [{:__aliases__, [alias: false], [:Enum]}, :reverse]}
{{:., [], [{:__aliases__, [alias: false], [:Enum]}, :reverse]}, [], []}
{:|>, [context: Elixir, import: Kernel],
[[1, 2, 3],
{{:., [], [{:__aliases__, [alias: false], [:Enum]}, :reverse]}, [], []}]}
:Enum
{:__aliases__, [alias: false], [:Enum]}
:sum
{:., [], [{:__aliases__, [alias: false], [:Enum]}, :sum]}
{{:., [], [{:__aliases__, [alias: false], [:Enum]}, :sum]}, [], []}
{:|>, [context: Elixir, import: Kernel],
[{:|>, [context: Elixir, import: Kernel],
[[1, 2, 3],
{{:., [], [{:__aliases__, [alias: false], [:Enum]}, :reverse]}, [], []}]},
{{:., [], [{:__aliases__, [alias: false], [:Enum]}, :sum]}, [], []}]}