ŹR
defmodule Validator do
@callback validate(any()) :: any()
def validate(_), do: "abstract validate"
defmacro __using__(_opts) do
quote do
@behaviour Validator
def validate(_), do: Validator.validate()
defoverridable(Validator)
end
end
end
defmodule MyValidator do
use Validator
def validate(:ok), do: "concrete validator"
def validate(any), do: Validator.validate(any)
end
Вот так можно сделать, только не понятно зачем.