語法:
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...