bad match question

Matthias Lang <>
Tue Jun 7 17:21:11 CEST 2005


Charles Blair writes:
 > i'm curious why the bad match here isn't caught until runtime:
 > 
 > -module(test).
 > -compile([export_all]).
 > 
 > start() ->
 >   Test = [a, b, c],
 >   Test = [1, 2, 3].

The above code _must_ generate a badmatch at runtime, such are
Erlang's semantics. A sufficiently smart compiler could choose to
generate the same code as it would have generated for

   start() ->
     exit({badmatch, [1, 2, 3]}).

And yes, it would be nice if the compiler generated a warning for your
code, but it doesn't. The dialyzer probably does (I haven't tried).

Matthias



More information about the erlang-questions mailing list