Erlang程式設計實踐啟示

2021-07-27 11:26:00 字數 1174 閱讀 8848

近日,在qq聊天中看到乙個做erlang程式設計練習題,大致就是判斷乙個列表是否在另乙個列表中出現。

實際上,我雖然學習erlang有段時間,但沒有真正去編寫過軟體或做大量程式設計。最初我寫了這樣一段程式來實現這個功能:

-module(test).

-export([forteen/2]).

forteen(a,b)->fun_sec(a,b,a,b0).

fun_sec(_,,_,_,_)->false;

fun_sec([ha|ta],[hb|tb],a,b,sum) when ha==hb ->

iflength(ta)==0 ->[true,sum];

true ->fun_sec(ta,tb,a,b,sum)

end;

fun_sec(_,_,a,b,sum)->

fun_sec(a,myy(sum+1,b),a,b,sum+1).

myy(_,)->;

myy(sum,[_|t]) when sum /=0 ->myy(sum-1,t);

myy(0,b)->b.

但總覺得不夠erlangic,於是再另行編寫,最後結果如下:

-module(test).

-export([forteen/2]).

forteen(a,b)->fun_sec(a,b,,0).

fun_sec(,_,_,sum) -> [true,sum];

fun_sec(a,b,_,_) when length(a)>length(b) -> false;

fun_sec([h|ta],[h|tb],samelst,sum) ->

fun_sec(ta,tb,[h|samelst],sum);

fun_sec(a,[_|t],,sum)->fun_sec(a,t,,sum+1);

fun_sec(a,b,samelst,sum)->

[_|t]= myy(samelst,b),

fun_sec(myy(samelst,a),t,,sum+1).

myy(,res) -> res;

myy([h|t],res) -> myy(t,[h|res]).

再看第二個程式,就是充分利用了函式引數中的匹配功能,從而達到簡化函式內部語句的複雜性,從而使程式更易懂、易讀。

Erlang程式設計01

erlang程式設計簡介 erlang程式設計 由人民郵電出版社出版發行 圖靈程式設計叢書 作者 joe armstrong 喬 阿姆斯壯 譯者 趙東煒 金尹 錄入 cenzige 詳細資訊 書名原文 programming erlang software for a isbn 978 7 115 ...

Erlang程式設計11

2.4 啟動shell 現在我們正式開始。shell是乙個互動工具,我們長用他來完成與erlang的互動。啟動shell隻後,我們可以輸入表示式,然後shell就會返回這些表示式的值。如果你已經安裝好了erlang,那麼erlang shell erl也就同時安裝好了。要執行他,請開啟乙個傳統的作業...

《Erlang程式設計》 筆記

語法 1.模式匹配 表示乙個模式匹配操作。lhs rhs實際上是這樣乙個過程,對右端求值 rhs 然後將結果與左端 lhs 進行模式匹配。2.分號 逗號 用來分隔函式呼叫,資料構造器以及模式中的引數。句號 後跟乙個空白符號 用來在shell中分隔完整的函式和表示式。分號 用來分隔字句。如分段的函式定...