那麼今天就來介紹說很久但是一直沒有寫的Erlang吧!
Erlang是一隻很有趣的語言,它絕對跟你看過的主流語言有巨大的差異,無論是語法上還是思想上皆是如此
首先我們需要安裝環境,請參考官方的Downloads
接著我們就從erl開始吧
輸入指令啟動Erlang的互動環境
你可以先嘗試輸入
為什麼會出現例外呢?因為Erlang不準改變變數之值,Erlang將X=0.這樣的述句稱為綁定,而變數一但綁定就不能再次綁定,所以X將永遠為0,請不要害怕這會成為問題
事實上,在共時編程中,這樣的結果是令人安心的,競態問題將大幅減少,你將得到的是助益
那麼我們來看更加細節的部份,首先變數名稱並不是能隨意命名的,在Erlang中,只有大寫開頭的名稱會被當成變數名稱,因為小寫被原子(atom)佔去了(小寫開頭即為原子,後面再解釋何為原子)
綁定只有一次,.是一個述句的結束
接著我們來看更多的案例
就是個加法
和剛才稍有不同,不過你可以從這個案例看出為什麼叫做綁定,因為這是雙向的,=會比較兩邊是否相同,如果左值尚未被綁定就會進行綁定行為
這裡有更有趣的案例,你可以更清楚的了解到=的行為
這裡可以看到Erlang對數字型別的自動轉換,運算在Erlang中相當輕鬆,Erlang已處理了最麻煩的部份
原子之值即自己
元組(tuple)可以想成匿名的C結構
由於神奇的模式綁定(其實就是=的規則),我們可以寫出如
這樣複雜的對應式,_匹配任意值但是我們不care那是什麼,可以看到我們透過綁定取得MyName,話說我是不是寫太矮了(咦)
這裡也展示Erlang常用的技巧,利用atom標記欄位
需要注意的是如果右值具有不存在的參考,Erlang會說明此參考尚未繫結(unbound)
就像這樣
列表(list)
可以看到列表與結構皆能做模式比對
差別在於這個案例
你可以透過特殊的語法比對出Head與Tail,熟悉函數式編程的同學應該已經興奮不已了吧,大概啦
這個特性讓list能夠被迭代,而tuple不能
接著我們來談字串
看起來與你過去所學無異,但其實Erlang是用數字列表代表字串的,所以你可以
這真的很Surprise
但是如果列表無法組成字串,就只是普通的列表,算是Erlang中最難搞的陷阱之一
最後教你怎麼退出erl
輸入q().
像這樣,這會頓一下才退出
你也可以按<C-c>,輸入a,按<Enter> (a)bort
像這樣
按<C-g>,輸入q,按<Enter>
像這樣
輸入halt().
像這樣,這會馬上退出
下一篇介紹模組好了,我到底欠幾個下一篇了QQ
沒有留言:
張貼留言