一种函式式程式语言 Elixir


一种函式式程式语言 Elixir

文章插图
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 虚拟机上进行扩展性更好的、高生产率的开发 。
一种函式式程式语言 Elixir

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