say() do IO.puts("#{__MODULE__}した^ω^") end end end summon.(Rikai) Rikai.say() # Elixir.Kanzen.Rikaiした^ω^ モジュール名の動的な名前付けも可能 モジュールの親子関係はModule.concat/2を使う 文字列からモジュール名つける場合は Module.concat/1が使える iex> Module.concat(["Hoge"]) Hoge
do IO.puts("#{unquote(fun_name)}#{arg}です") end end end summon.(:hoge) Hoge.hoge("fuga") # hogefugaです unquoteを使えば関数名を動的に生成できる unquoteはASTに式を注入するもの イメージは文字列に変数を展開するのと同じ感じ