Há transformação de análise para valores de erlang de verificação de tipo em tempo de execução.
https://github.com/extend/sheriff.git
Aqui está um exemplo:
-compile({parse_transform, sheriff}).
-type my_type() :: {integer(), binary()}.
check_some_types(Val) ->
true = sheriff:check(Val, my_type),
true = sheriff:check(Val, {external, type}),
true = sheriff:check(Val, "external:type()"),
true = sheriff:chack(Val, "{integer(), binary()}").
sheriff:check/2
Retorno de função true
ou false
em caso de sucesso ou erro.
Suporta tipos internos (definidos no módulo), externos (exportados em outro módulo) e tipos inline (definidos na string).
No momento, ele não suporta tipos em variáveis ​​como: sheriff:check(Val, Type)
mas estamos trabalhando nisso)