Posted at

Elixir で普通では使えない記号が入った名前の関数を定義する

More than 3 years have passed since last update.

quote を使うとめちゃくちゃな名前の関数でも定義できる。


fancy.exs

defmodule Fancy do

defmacro __using__(_) do
fancy_name = :"!#$%&'()_"
quote do
def unquote(fancy_name)() do
42
end
end
end
end


foo.exs

defmodule Foo do

use Fancy
end

$ iex -r fancy.exs -r foo.exs

iex> Foo."!#$%&'()_"
42