f(1) ->
io:format("I got one!");
f(X) when X rem 2 == 0 ->
io:format("I got even!");
f(X) when X rem 2 == 1 ->
io:format("I got odd! (but not one)").
...
f(random:uniform(1000)).
f("Now eat this!"). %% runtime error
####
-module(fns).
-export([run_test/0]).
f(X, Acc) when X rem 2 == 0 ->
Acc;
f(X, Acc) when X rem 2 == 1 ->
Acc + 1.
run_test() ->
TSeq = [random:uniform(10) ||
_ <- lists:seq(1, 1000000)],
{Time, Result} = timer:tc(fun() ->
lists:foldl(fun f/2, 0, TSeq)
end),
io:format("~w microseconds~nResult: ~w~n",
[Time, Result]).
####
93267 microseconds
Result: 500464