Coding Poet, Coding Science

Elixir:建立在Erlang虚拟机上的函数式语言

Elixir是建立头Elrang虚拟机上的函数式、并发的、通用的编程语言。Elixir是一个BEAM(Erlang虚拟机的名称)上面的一个比较新的编程语言。Elixir的思想是所有的事物都看成是表达式。现代编程语言通常都具有开些诸如泛型编程、函数式编程、面向对象编程,对并发、并行、异步、非阻塞都有很好的支持,支持多态特性。在函数式编程方面上也支持模式匹配。类型系统当然更为严谨。此外,模式匹配、惰性求值、unicode支持、多态、文档注释甚至文学编程特性、高阶函数也往往都具备。

Elixir的REPL环境是iex命令。Elixir的语言的扩展名是exs。

Erlang的虚拟机的配置是

erl -name node06@10.0.0.151 --cookie a

同样地,自己希望在Elixir中也可以采用集群的方式管理和安装。比如如下的代码:

juju run --all "wget http://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb"
juju run --all "sudo apt-get update"
juju run --all "sudo apt-get install elixir"

这样就安装好了Elixir环境。然后就是配置程序语言了。不知道与Erlang同样基于BEAM虚拟机,是否可以同时启动Erlang环境与Elixir环境。结果是,确实是这样,如果一个Erlang虚拟机启动了,Elixir也能够连接到Erlang结点。

Erlang的各个结点加入之后,使用

iex --name elixir@node01.107.maas

来创建一个Elixir结点,然后使用

Node.connect :'node06@node06.
Node.list

如果要开启多个结点,可以使用这样的模式:

juju run --all 'iex --name elixir@$(hostname).107.maas --detached'

来查看Erlang/Elixir已经接受的虚拟机的结点。但是需要注意的是,虽然它们共用同一个结点,但是Elixir的程序的代码与Erlang的程序的代码却是不通用的。也就是说,iex能够发现Erlang的结点,但是在Erlang的结点上spawn程序会造成问题。因此,elixir只能在elixir的结点上分配程序。