萬能藥仔
外觀
這是此頁批准,以及是最近的修訂。
Elixir是一个是對 Erlang 虛擬機器的函數式、面向並列的通用程式語言。Elixir 以 Erlang 為基礎,支援分散式、高容錯、即時應用程式的開發,亦嘛會當過巨集實現元程式設計對其進行擴充,並通過協定支援多型。
歷史
José Valim 是 Elixir 語言的設計者。伊創造這个語言的目標是咧維持佮這馬有 Erlang 工具鏈佮生態環境相容性的同時,予人會當佇 Erlang 虛擬機器頂懸進行擴充性閣較好的、高生產率的開發。
特性
- 是因為 Erlang 虛擬機器(BEAM)。
- 佮 Erlang 語言的無縫接接;佮 Erlang 的互調差不多無任何外開銷。
- 佇咧巨集的元程式設計能力,語言的抽象語法樹作為頭等公民。
- 是協定的多型實現。受著 Clojure 啟發,協定提供動態分派機制。但是袂使濫著多分派,因為乎 Elixir 協定佇一个單一類型上進行分派。
- 完善的文件支援。
- 通過訊息傳達(演員模型)支援 Shared-nothing 並列事務。
- 強調利用遞迴佮高階函式的函式語言程式設計較贏過基於副作用佮迴圈的指令式程式設計。
- 一切攏為表達式。
- 慢性求值,有諸如 futures 和 promises 一類的非同步流資料類型。
- 模式匹配。
- Unicode 支援,UTF 鋪八字捾。
範例
以下範例會當佇 iex shell 中執行或者是儲存佇檔案內底,並通過命令列鍵入命令執行 ` elixir _ < filename > _ ` .
經典的 Hello world 例 :
Enumerable 推捒模式匹配(解構)
模式匹配(厚子句)
管道運算子模組順序產生一千个行程執行非同步任務
參考資料
外部連結
- Elixir language website
- Code on GitHub
- Elixir School
- Elixir-A modern approach to programming for the Erlang VM video presentation
- Dave Thomas : " Programming Elixir : Functional | > Concurrent | > Pragmatic | > Fun " ( book )
- Simon St . Laurent , J . David Eisenberg : " Introducing Elixir " ( book )
- Joe Armstrong : " A Week with Elixir " ( blog entry )
- Erlang 之父學習 Elixir 語言的一禮拜