Erlang Programming/How To Do It Example
Appearance
-module(tut).
-export([rev/1,dob/1]).
%% double
dob([ S | T ]) ->
F = [ 2*S | [] ],
dob(T, F).
dob([ S | T ], F) ->
X = [ 2*S | F ],
dob(T, X);
dob([], X) ->
rev(X).
%% reverse
rev([ S | T ]) ->
F = [ S | [] ],
demo(T, F).
demo([ S | T ], C) ->
F = [ S | C ],
demo(T, F);
demo([], L) ->
[],
L.
please note the scope of local variables in the above code
run :
c(tut). tut:dob([1, 2, 3]). tut:rev(tut:dob([1, 2, 3])).
another module which is call quicksort
-module(quicksort). -export([sort/1]).
sort([ S | F ]) ->
% for X < S, bind X to F
sort([ X || X <- F, X < S ])
++ [S]
++ sort([ X || X <- F, X > S ]);
sort([]) ->
[].
run :
c(quicksort). quicksort:sort([9,4,3,7,8,5,1,2,6]).