6. Functions
6 Functions
6.1 Pattern Matching
Pattern matching in function head as well as in case
and receive
clauses are optimized by the compiler. With a few exceptions, there is nothing to gain by rearranging clauses.
One exception is pattern matching of binaries. The compiler does not rearrange clauses that match binaries. Placing the clause that matches against the empty binary last is usually slightly faster than placing it first.
The following is a rather unnatural example to show another exception:
DO NOT
atom_map1(one) -> 1; atom_map1(two) -> 2; atom_map1(three) -> 3; atom_map1(Int) when is_integer(Int) -> Int; atom_map1(four) -> 4; atom_map1(five) -> 5; atom_map1(six) -> 6.
The problem is the clause with the variable Int
. As a var