Todos los vídeos

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.

Enum.filter

La función filter del módulo Enum sirve para extraer de una colección enumerada de elementos una subcolección en la que sólo nos quedamos con aquellos elementos que cumplan con una condición booleana que le indiquemos previamente.

Sobre las funciones de alto orden

En Elixir, como en muchos lenguajes de programación funcionales, en vez de tener un montón de funciones especializadas en un montón de tipos de datos diversos, tenemos funciones generales de alto orden que aceptan como parámetro más funciones, con las cuales podemos especificar cómo queremos que funcionen.

Tu lista no está rota, es una charlist

Si alguna vez te ha pasado la de crear una lista de enteros y que te lo muestre como un montón de caracteres, no es que se haya roto tu instalación de Elixir, es que estás tratando con una charlist. No se usa mucho, pero ahí está. 00:00 Introducción a las charlists 03:02 Historias sobre codificación: la tabla ASCII 06:20 Codificación internacional: Unicode 08:12 Un caracter Unicode es más de un byte 09:05 Resumen de todo esto

Bitstrings

El último tipo de datos que vamos a ver es bitstring, y es literalmente eso: una cadena de bits. De este modo podemos guardar números con una longitud predefinida, como en los lenguajes de programación tradicionales. Además, binarios y su relación con las cadenas de caracteres. 00:00 Introducción a las bitstrings 04:32 Bitstrings con múltiples valores 05:18 Comparación de bitstrings 06:12 Binaries y su relación con los strings

Estructuras

Con la palabra clave defstruct podemos crear estructuras. Son como mapas, pero tienen una semántica que declaramos nosotros y que es mucho más fija. Conviene tenerlo en mente si pretendemos usar librerías como Ecto (y por ende, por ejemplo, Phoenix).

Por duración
Por tema