[erlang-questions] Pattern matching in function calls
Antoine Koener
antoine.koener@REDACTED
Wed Apr 13 14:46:08 CEST 2011
On Apr 13, 2011, at 13:44 , Dave Challis wrote:
> Does the order of patterns in a function call matter? Are they all
> tested, or will erlang stop trying to match them once a mismatch has
> been found?
>
> As an example, if I've got:
>
> foo(<<SomeLargeBinary>>, a) -> a;
> foo(<<SomeLargeBinary>>, b) -> b.
>
> will the above be any slower than defining:
>
> foo(a, <<SomeLargeBinary>>) -> a;
> foo(b, <<SomeLargeBinary>>) -> b.
>
> Will the <<SomeLargeBinary>> attempt to be matched in every case?
> Is it something worth thinking about, or will the compiler optimise
> this?
If the content of <<SomeLargeBinary>> is irrelevant, you can use the
'_' notation:
foo(a, _Bin) -> a;
foo(b, _Bin) -> b;
Then this is explicit for the reader that you don't want to check _Bin.
More information about the erlang-questions
mailing list