Programming Elixir 1.6
From Doku
Capítulo 1
Motivación
Elixir es un lenguaje super performante que corre en la VM de Erlang. Una de sus capacidades distintivas es la tolerancia a fallos, que adopta de Erlang. Hace muy fácil la programación de concurrencia (ver el ejemplo más abajo). El autor hace hincapié en que los datos son inmutables por naturaleza en Elixir y eso facilita mucho la programación.
Ejemplo de Elixir
defmodule Parallel do
def pmap(collection, func) do
collection
|> Enum.map(&(Task.async(fn -> func.(&1) end)))
|> Enum.map(&Task.await/1)
end
end
Con esta función (Parallel.pmap) podemos mapear colecciones con funciones que corran paralelamente.
El operador |> equivale al "pipe" | de la línea de comandos de Unix.
result = Parallel.pmap 1..1000, &(&1 * &1)
&(&1 * &1)
es equivalente a lo que en Javascript sería: function(first_arg) { return first_arg * first_arg; }
, es decir, una declaración de función anónima.