-
Elixir
(一種函數式編程語言)
鎖定
Elixir 是一個基於 Erlang 虛擬機的函數式、面向並行的通用編程語言。Elixir 以 Erlang 為基礎,支持分佈式、高容錯、實時應用程序的開發,同時亦對其進行擴展使之藉助宏實現元編程,並通過協議支持多態。
[1]
- 中文名
- 長生不老藥 [3]
- 外文名
- Elixir
- 所屬學科
- 計算機軟件
- 編程範型
- 函數式,並行式,面向進程,同像性
- 發行時間
- 2012
- 最新發行時間
- v1,12.May 19, 2021
- 型態系統
- 動態類型, 強類型
- 啓發語言
- Erlang, Ruby, Clojure
- 許可證
- Apache License
- 文件擴展名
- .ex, .exs
- 網 站
- www.elixir-lang.org
Elixir發展歷史
José Valim 是 Elixir 語言的設計者。他創造該語言的目標是在維持與現有 Erlang 工具鏈及生態環境兼容性的同時,讓人們可以在 Erlang 虛擬機上進行擴展性更好的、高生產率的開發。
[2]
Elixir特性
- 基於 Erlang 虛擬機(BEAM)之上。
- 與 Erlang 語言的無縫銜接;與 Erlang 的互調幾乎無任何額外開銷。
- 基於宏的元編程能力,語言的抽象語法樹作為頭等公民。
- 基於協議的多態實現。(啓發自Clojure)
- 完善的文檔支持。
- 通過消息傳遞(參與者模式)支持 Shared-nothing 並行事務。
- 強調利用遞歸和高階函數的函數式編程勝過基於副作用和循環的命令式編程。
- 一切均為表達式。
- 惰性求值,擁有諸如 futures 和 promises 一類的異步流數據類型。
- 模式匹配。
- Unicode 支持,UTF-8 字符串。
Elixir例子
以下的所有例子也可以保存到文件中並通過elixir 在命令行中運行
Hello World
iex> IO.puts "Hello World!" Hello World!
列表推導
iex> for n <- [1,2,3,4,5], rem(n,2) == 1, do: n*n [1, 9, 25]
模式匹配
iex> [1, a] = [1, 2] iex> a 2 iex> {:ok, [hello: a]} = {:ok, [hello: "world"]} iex> a "world"
模塊
defmodule Fun do def fib(0), do: 0 def fib(1), do: 1 def fib(n) do fib(n-2) + fib(n-1) end end
進程spawn
for num <- 1..1000, do: spawn fn -> IO.puts "#{num * 2}" end
異步任務
task = Task.async fn -> perform_complex_action() end other_time_consuming_action() Task.await task
- 參考資料
-
- 1. Elixir .José Valim[引用日期2015-04-30]
- 2. Elixir - A modern approach to programming for the Erlang VM .José Valim[引用日期2015-04-30]
- 3. 百度翻譯-200種語言互譯、溝通全世界! .百度翻譯.2021-10-04[引用日期2021-10-04]