defmodule OnDefinition do def on_definition(env, _kind, _name, _args, _guards, _body) do Module.put_attribute(env.module, :my_func_attr, nil) end end defmodule Foo do # Foo モジュール内で関数を定義したタイミングで呼ばれるフックを指定する。 @on_definition {OnDefinition, :on_definition} # これをモジュール定義の最初のほうで実行すると、 # 以降このモジュール内に出現した `@my_func_attr expr` が記録されていく。 # このモジュールのコンパイルフェーズ中に限り、 # `Module.get_attribute(Foo, :my_func_attr)` マク