《Erlang程式設計》 筆記

2021-06-05 14:29:32 字數 1153 閱讀 1092

語法:

1.模式匹配:=表示乙個模式匹配操作。lhs=rhs實際上是這樣乙個過程,對右端求值(rhs),然後將結果與左端(lhs)進行模式匹配。

2.分號:

逗號(,)用來分隔函式呼叫,資料構造器以及模式中的引數。

句號(.)(後跟乙個空白符號)用來在shell中分隔完整的函式和表示式。

分號(;)用來分隔字句。如分段的函式定義,case語句,if語句,try...catch語句以及receive表示式。

原理:

1.erlang採用訊息模型,程序之間不共享任何資料,完全避免了引入鎖的必要。對於多核而言,完全無鎖。

2.cop(面向併發程式設計):程序+訊息的模型來建模現實世界中多人協作的場景。乙個程序表示乙個人,人與人之間並不存在任何共享的記憶體,彼此之間的協作完全通過訊息互動來完成。

3.erlang工作機制:

特點:

erlang中可以使用一種叫做二進位制(binary)資料的結構來儲存大量的原始資料。相對於列表或元組,二進位制型別更加節省記憶體,而且執行時系統也對此進行了優化,對二進位制的輸入輸出更加高效。

erlang裡,程序屬於程式語言而非作業系統。

客戶端/服務端:

send其實並非是把訊息傳遞到乙個程序去,而是把乙個訊息傳送到這個程序的郵箱中去。同理receive則是在試圖把一條訊息從程序郵箱中刪除。erlang的每乙個程序都有與之對應的郵箱。當向程序發訊息時,訊息就被送入郵箱之中。當系統對receive語句進行求值時,就是對程序郵箱進行檢查的唯一機會。

尾遞迴:

例子:

loop() ->

receive

} ->

from ! ,

loop();

} ->

from ! ,

loop();

->

from ! },

loop()

end.

編譯尾遞迴的函式可以使在一系列語句最後的乙個函式呼叫,可以被替換為乙個簡單的跳轉指令,指向被呼叫函式的開頭。這就意味著乙個尾遞迴的函式可以無限而不需要消耗棧空間。

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節點程式設計

erlang節點內程式設計 erlang節點內程式設計的基本工具可說是人所共知了 用send和receive來實現通訊 用鏈結 link 和監視器 monitor 來構造健壯的 在單個程序失敗時也不會崩潰的應用程式。正如前文所說,鏈結 link 和監視器 monitor 是編寫具有高容錯性的erla...