
Elixir(一种函式式程式语言)
Elixir 是一个基于 Erlang 虚拟机的函式式、面向并行的通用程式语言。Elixir 以 Erlang 为基础,支持分散式、高容错、实时应用程式的开发,同时亦对其进行扩展使之藉助宏实现元编程,并通过协定支持多态。
基本介绍
- 中文名:Elixir
- 外文名:Elixir
- 编程范型:函式式,并行式,面向进程,同像性
- 发行时间:2012
- 最新发行时间:1.0.0 / 2014年9月10日,6个月前
- 型态系统:动态类型, 强类型
- 启发语言:Erlang, Ruby, Clojure
- 许可证:Apache License
- 档案扩展名:.ex, .exs
- 网站:www.elixir-lang.org
历史
José Valim 是 Elixir 语言的设计者。他创造该语言的目标是在维持与现有 Erlang 工具链及生态环境兼容性的同时,让人们可以在 Erlang 虚拟机上进行扩展性更好的、高生产率的开发。

特性
- 基于 Erlang 虚拟机(BEAM)之上。
- 与 Erlang 语言的无缝衔接;与 Erlang 的互调几乎无任何额外开销。
- 基于宏的元编程能力,语言的抽象语法树作为头等公民。
- 基于协定的多态实现。(启发自Clojure)
- 完善的文档支持。
- 通过讯息传递(参与者模式)支持 Shared-nothing 并行事务。
- 强调利用递归和高阶函式的函式式编程胜过基于副作用和循环的命令式编程。
- 一切均为表达式。
- 惰性求值,拥有诸如 futures 和 promises 一类的异步流数据类型。
- 模式匹配。
- Unicode 支持,UTF-8 字元串。
例子
以下的所有例子也可以保存到档案中并通过elixir <filename>在命令行中运行
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> a2iex> {: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) endend
进程spawn
for num <- 1..1000, do: spawn fn -> IO.puts "#{num * 2}" end
异步任务
task = Task.async fn -> perform_complex_action() endother_time_consuming_action()Task.await task