Jump to content

Erlang Programming/How To Do It Example

From Wikibooks, open books for an open world

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