转到内容

Erlang 编程/实际操作示例

来自维基教科书,面向开放世界的开放图书

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

请注意以上代码中局部变量的范围

运行 

  c(tut).
  tut:dob([1, 2, 3]).
  tut:rev(tut:dob([1, 2, 3])).

另一个模块,称作 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([]) ->
      [].

运行 

  c(quicksort).
  quicksort:sort([9,4,3,7,8,5,1,2,6]).
华夏公益教科书