Files
comp4958/lectures/07/lec7.erl
T
2026-10-20 11:28:07 -07:00

48 lines
960 B
Erlang

-module(lec7).
-export([fact/1, qsort/1, fizzbuzz/1, dedup/1]).
fact(N) when N =< 0 -> 1;
fact(N) -> N fact(N - 1).
qsort([]) -> [];
qsort([H | T]) ->
qsort([X || X <- T, X =< H]) ++ [H] ++ qsort([X || X <- T, X > H]).
fizzbuzz(N) -> fizzbuzz(1, N);
fizzbuzz(I, N) when I > N -> ok;
fizzbuzz(I, N) ->
% ~n is newline in erlang, not \n
if
I rem 15 == 0 -> io.format("fizzbuzz~n");
I rem 5 == 0 -> io.format("buzz~n");
I rem 3 == 0 -> io.format("fizz~n");
true -> io.format("~p~n", [I])
end,
fizzbuzz(I + 1, N).
dedup([]) -> [];
dedup([X, X | R]) -> dedup([X|R]);
dedup([X|R]) -> [X | dedup(R)].
dedup2(L) ->
case L of
[] -> [];
[X, X | R] -> dedup2([X|R]);
[X | R] -> [X | dedup2(R)]
end.
% compile
% c(lec7)
% lec7:fact(100)
% lec7:qsort([3,2,7,6,8])
F = fun(X) -> X * X end.
lists:map(F, [1,3,2]).
lists:map(fun string:length/1, ["hello", "goodbye"]).
% accessing maps
M = #{"bart" => 77, "homer" => 25}.
#{"homer" := X} = M.
X.