Вы также можете использовать сопоставление с образцом в заголовке функции дубликатов:
-module(my).
-compile(export_all).
duplicates(N, N, N) -> 3;
duplicates(N, N, _) -> 2;
duplicates(N, _, N) -> 2;
duplicates(_, N, N) -> 2;
duplicates(_, _, _) -> 0.
duplicates_test() ->
0 = duplicates(1,2,3),
2 = duplicates(1,2,2),
2 = duplicates(2,2,1),
2 = duplicates(2,1,2),
3 = duplicates(2,2,2),
all_tests_passed.
В оболочке:
~/erlang_programs$ erl
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.3 (abort with ^G)
1> c(my).
my.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,my}
2> my:duplicates_test().
all_tests_passed
3>
Это тип определения функции, который известен erlangдля.