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.

Instalando Elixir

Instrucciones de instalación de Elixir-lang.org