- funcional impura
 - baseada no ecossistema de erlang (otp, beam vm, portabilidade de libs)
 - sintaxe próxima ao Ruby (sintaxe do erlang é mais distinta) Ex: simbolos como "!", "||" tem função completamente diferente no erlang a igualdade é "=:=" por exemplo
 - comunidade brasileira maior que do erlang
 - fácil acesso a libs erlang
 - automatizador de tarefas: Mix
 - já vem com gerenciador de dependências por padrão (no Mix)
 - variáveis mutáveis diferente do erlang
 - tolerante a falhas
 - ferramentas de depuração REPL (IEx.pry) e outros por padrão
 
Em elixir é possivel alterar variáveis
  a = 1
  a = 3Ou não
  a = 1
  a^ = 3 # vai disparar um erro se "a" já estiver com algum valorEm erlang não
  A = 1
  A = 2 # vai disparar um erroTanto em Elixir quanto em Erlang toda função retorna um valor, que é a última linha porém há algumas diferenças.
Em Erlang não há um valor defalt de retorno, então ele deve estar explicitamente funcão
  is_valid_signal(Signal) ->
    case Signal of
        {signal, _What, _From, _To} ->
            true;
        {signal, _What, _To} ->
            true;
        _Else -> # qualquer outro padrão
            false
    end.Em Elixir há um valor padrão, que é o 'nil' então se o case não cair em nenhum caso, o retorno da função is_valid_signal, será 'nil'
  is_valid_signal(Signal) do
    case Signal do
        {signal, _What, _From, _To} ->
            true;
        {signal, _What, _To} ->
            true;
    end.Em elixir é possível usar bibliotecas erlang simplesmente acessando as pelo atom, que as define?
  :io.format("argumento =  ~p~n",["argumento"])Com elixir é possivel depurar o projeto com ferramentas REPL
  require IEx;
  defmodule Example do
    def double_sum(x, y) do
      IEx.pry
      hard_work(x, y)
    end
    defp hard_work(x, y) do
      2 * (x + y)
    end
  end  $ iex -S mix
  Interactive Elixir (1.2.4) - press Ctrl+C to exit (type h() ENTER for help)
  iex(1)> Example.double_sum(1, 2)Em Elixir é possivel encadear funções com uso de pipes (pipe operator) facilitando a leitura, um recurso comum em linguagens funcionais
  foo(bar(baz(new_function(other_function()))))  other_function() |> new_function() |> baz() |> bar() |> foo()