[erlang-questions] Module language for Dialyzer?

Pierre Fenoll <>
Fri Oct 4 07:21:17 CEST 2013


A module spec can be useful to throw compile-time warnings when implementing generic handlers. 
(A generic handler being a collection of functions calling specific functions from another module.)

Though, a "module signature" already exists (-callback used in pair with -behavior), currently there is no way to check if the other module implements the required functions. 
I think it would be a great addition. 

> On 4 oct. 2013, at 03:48, Siraaj Khandkar <> wrote:
> 
> What are the theoretical problems (if any) with an idea of extending Dialyzer with a module language to express composable interfaces in the spirit of SML?
> 
> Something along the line of:
> 
> dict.esig:
>    -signature(dict) ::
>    sig
>        -type t(K, V) :: opaque().
>        -fun new() -> t(K, V).
>        -fun add(t(K, V), K, V) -> t(K, V).
>        -fun find(t(K, V), K) -> none | {some, V}.
>        ...
>    end.
> 
> stringable.esig:
>    -signature(stringable) ::
>    sig
>        -type t() :: opaque().
>        -fun to_string(t()) -> string().
>        -fun of_string(string()) -> t().
>        ...
>    end.
> 
> my_serializable_dict.erl:
>    -module(my_serializable_dict).
>    -implements([dict, stringable]).
>    ...
> 
> 
> Syntax is not the point of this, so don't get hung-up on it for the purpose of this question - I'm making it up as I type :)
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions



More information about the erlang-questions mailing list