Todos los vídeos

Un ejemplo práctico de módulo útil

13 minutos de programación comentada en vivo de un módulo usando una dependencia y cosas que hemos visto en los últimos capítulos, como pipelines o funciones de alto orden transformadoras, con el objetivo de dar la excusa para refactorizarlo en el próximo vídeo.

Dependencias

Normalmente en Elixir el código que escribimos no vive aislado, sino que es habitual utilizar funciones escritas en otros proyectos con los que nos conectamos, para reutilizar módulos y no programar lo mismo dos veces. hex.pm es el gestor de paquetes primario de Elixir para estos fines y en este vídeo te cuento cómo traerte dependencias de hex.pm a tu mix.exs.

Atributos de módulo

Los atributos de módulo son anotaciones tipo clave-valor que empiezan por una arroba (como doc, moduledoc, ya vistos) y que sirven para asignar metadatos a los módulos, aunque también son empleados para crear constantes.

Documentando código: comentarios, docs y moduledocs

En todo este tiempo no he contado cómo se escribe un comentario en Elixir, no me lo creo. Además, cómo usar doc y moduledoc para escribir documentación sobre el propósito de una función o de un módulo cuando estemos escribiendo nuestros programas.

mix

Mix es una herramienta que forma parte de Elixir que sirve para gestionar un proyecto, manteniendo múltiples archivos .ex con los distintos módulos que forman nuestro programa. También nos permiten compilar aplicaciones para distribuirlas, instalar nuevas dependencias, y mantener una suite de tests para comprobar el estado de nuestro proyecto.

Recursividad (volumen 2)

Volvemos con la recursividad, esta vez para hablar de cómo aprovechar el pattern matching en listas, por ejemplo, para hacer funciones reductoras o transformadoras. Normalmente querremos usar las funciones nativas del módulo Enum o Stream, pero cuando no quede otra, tenemos a nuestra disposición recursividad.

Rangos y Streams

A diferencia de Enum.map y Enum.filter, con Stream.map y Stream.filter podemos obtener Streams. Un Stream en Elixir permite hacer procesamiento pospuesto: Elixir sabe que quiero procesar una colección con una función, pero no ejecuta el cómputo hasta que no haga falta, algo que en algunas ocasiones es ventajoso para hacer programas más eficientes.

Pipelines

El operador Pipeline es un operador especial de Elixir que sirve para hacer más fáciles de comprender algunas invocaciones a funciones, porque nos permite separar el primer parámetro de una aplicación del resto de parámetros, algo que nos viene bien porque podemos escribir expresiones tipo a(b(c(d(e(f(x))))) como x → f → e → d → c → b → a.

Enum.reduce

La función reduce del módulo Enum sirve para acumular parcialmente cada uno de los elementos de una colección enumerada entrante, hasta evaluarse completamente a un único resultado final.

Enum.map

La función map del módulo Enum sirve para transformar uno a uno cada elemento de una colección enumerada, recogiendo cada uno de esos elementos transformados en otra colección resultante que obtenemos tras evaluar.

Por duración
Por tema