Code (repl.it):
defmodule Foo do
defmacro deffoo(atom) do
quote do
def foo(unquote(atom) = arg) do
IO.inspect("hello from #{arg}")
end
end
end
end
defmodule Bar do
import Foo
deffoo(:a) # works
[:b, :c] |> Enum.each(fn atom ->
deffoo(atom) # doesn't work
end)
end
Bar.foo(:a)
Bar.foo(:b)
Bar.foo(:c)
Bar.foo(:d) # should not compile
Why doesn’t macro work inside Enum.each?