Elixir

Elixir
编程范型多范式函数式并行式面向进程同像性
发行时间2012年,​12年前​(2012
当前版本
  • 1.16.2 (2024年3月10日;穩定版本)[1]
編輯維基數據鏈接
型態系統动态类型强类型
許可證Apache License
文件扩展名.ex、.exs
網站elixir-lang.org
啟發語言
Clojure、Erlang、Ruby

Elixir是一个基于Erlang虚拟机函数式、面向并行的通用编程语言。Elixir以Erlang为基础,支持分布式、高容错、实时应用程序的开发,亦可通过实现元编程对其进行扩展,并通过协议支持多态。[2]

历史

José Valim是Elixir语言的设计者。他创造该语言的目标是在维持与现有Erlang工具链及生态环境兼容性的同时,让人们可以在Erlang虚拟机上进行扩展性更好的、高生产率的开发。[3]

特性

示例

以下示例可以在iex shell中运行或保存在文件中,并通过命令行键入命令运行 elixir <filename>.

经典的 Hello world 例子:

iex> IO.puts("Hello World!")
Hello World!

Enumerable 推导

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"

模式匹配(多子句)

iex> case File.read("path/to/file") do
iex>   {:ok, contents} -> IO.puts("found file: #{contents}")
iex>   {:error, reason} -> IO.puts("missing file: #{reason}")
iex> end

管道操作符

iex> "1" |> String.to_integer() |> Kernel.*(2)
2

模块

defmodule Fun do
  def fib(0), do: 0
  def fib(1), do: 1
  def fib(n), do: fib(n-2) + fib(n-1)  
end

顺序产生1000个进程

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. ^ 1.0 1.1 Release 1.16.2. 2024年3月10日 [2024年3月22日]. 
  2. ^ Elixir. José Valim. [2013-02-17]. (原始内容存档于2017-09-30). 
  3. ^ Elixir - A modern approach to programming for the Erlang VM. [2013-02-17]. (原始内容存档于2012-11-29). 

外部链接

  • 自由软件主题
  • 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语言的一周(页面存档备份,存于互联网档案馆

范型
过程式
面向对象
多范型
函数式
逻辑式
脚本语言
动态语言
Shell语言
ECMA-262
特定平台
.NET
JVM
特定领域
科学计算
GPU计算
  • Cg/HLSL
  • GLSL
  • Brook英语BrookGPU
  • OpenCL
  • CUDA/PTX英语Parallel Thread Execution
  • Futhark
  • SPIR-V英语Standard Portable Intermediate Representation
数据查询
可视化
传媒设计
 
其它
  • 分类 目录
  • 列表级条目 列表
  • 历史
  • 比较英语Comparison of programming languages
  • 时间线英语Timeline of programming languages