Difference between revisions of "Programming Elixir 1.6"
From Doku
(Resumen del capítulo 1) |
|||
Line 1: | Line 1: | ||
== Capítulo 1 == | == Capítulo 1 == | ||
− | Ejemplo de Elixir | + | === 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 === | ||
<syntaxhighlight lang="elixir"> | <syntaxhighlight lang="elixir"> | ||
defmodule Parallel do | defmodule Parallel do | ||
Line 13: | Line 17: | ||
Con esta función (Parallel.pmap) podemos mapear colecciones con funciones que corran paralelamente. | 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. | ||
<syntaxhighlight lang="elixir"> | <syntaxhighlight lang="elixir"> | ||
result = Parallel.pmap 1..1000, &(&1 * &1) | result = Parallel.pmap 1..1000, &(&1 * &1) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | <code>&(&1 * &1)</code> es equivalente a lo que en Javascript sería: <code>function(first_arg) { return first_arg * first_arg; }</code>, es decir, una declaración de función anónima. | ||
+ | === Instalando Elixir === | ||
+ | [http://elixir-lang.org/install.html Instrucciones de instalación de Elixir-lang.org] |
Latest revision as of 16:10, 30 August 2020
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.