You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The previous representation was very hard to compose and very often required the AST nodes to be created manually. The current approach is easier to compose because the node is represented as any other operator as long as it is wrapped in parentheses. For example, imagine we have pairs of patterns and the code to be executed for that pattern, and we want to inject them into a case. It can now be writen as: pairs = Enum.map pairs, fn { pattern, expr } -> quote do: (unquote(pattern) -> unquote(expr)) end quote do case unquote(condition), do: unquote(pairs) end Compare to the previous implementation: pairs = Enum.map pairs, fn { pattern, expr } -> { [pattern], [], expr } end pairs = { :->, [], pairs } quote do case unquote(condition), do: unquote(pairs) end
0 commit comments