Erlang Programming/How To Do It Example

-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]).