Elixir (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Translation Latin Alphabet.svg
Este artigo ou seção está a ser traduzido. Ajude e colabore com a tradução.
Elixir
Paradigma Multiparadigma, funcional, concorrente, distribuída
Surgido em 2012
Última versão 1.2.4[1]
Criado por José Valim
Estilo de tipagem: forte, dinâmica
Influenciada por Erlang
Influenciou LFE
Licença: Apache License 2.0[2]
Página oficial http://www.elixir-lang.org

Elixir é uma linguagem de programação funcional, concorrente, de propósito geral que executa na máquina virtual Erlang (BEAM). Elixir compila em cima de Erlang para fornecer aplicações distribuídas, em tempo real suave, tolerante a falhas, non-stop, mas também a estende para suportar metaprogramação com macros e polimorfismo via protocolos.[3]

História[editar | editar código-fonte]

José Valim é o criador da linguagem de programação Elixir, um projecto de R&D da Plataformatec. Seus objetivos foram permitir uma maior extensibilidade e produtividade no Erlang VM, mantendo a compatibilidade com ferramentas e ecossistema de Erlang.[4]

Características[editar | editar código-fonte]

Exemplos[editar | editar código-fonte]

Os exemplos a seguir podem ser executados em um shell IEX ou salvos em um arquivo e executados a partir da linha de comando, digitando elixir <filename>.

Exemplo clássico de Hello world:

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

Compreensões

iex> for n <- [1,2,3,4,5], rem(n,2) == 1, do: n*n
[1, 9, 25]

Pattern Matching

iex> [1, a] = [1, 2]
iex> a
2

iex> {:ok, [hello: a]} = {:ok, [hello: "world"]}
iex> a
"world"

Módulos

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

Sequencialmente distribuindo mil processos

for num <- 1..1000, do: spawn fn -> IO.puts "#{num * 2}" end

Executando uma tarefa de forma assíncrona

task = Task.async fn -> perform_complex_action() end
other_time_consuming_action()
Task.await task

Referências

  1. «elixir/CHANGELOG.md at v1.2.4 · elixir-lang/elixir · GitHub». GitHub 
  2. «elixir/LICENSE at master · elixir-lang/elixir · GitHub». GitHub 
  3. José Valim. «Elixir». Consultado em 26 de abril de 2016 
  4. «Elixir - A modern approach to programming for the Erlang VM». Consultado em 26 de abril de 2016 
  5. a b c d «Elixir». Consultado em 26 de abril de 2016 

Ligações externas[editar | editar código-fonte]