En programación funcional, las funciones son datos: se pueden pasar a otras funciones. Dos de las más útiles reciben una función y un tren:
(map doble '(1 2 3))usa la máquinadoblecon cada vagón:(2 4 6).(filter even? '(1 2 3 4))se queda solo con los vagones que cumplen la condición:(2 4).
Y se pueden encadenar, como las máquinas de jugo: primero filtrar, después transformar. También puedes crear una máquina sin nombre con lambda: (lambda (x) (* x 10)).
Pensar como arquitecto
Fíjate que no dijiste cómo recorrer el tren (sin contadores, sin saltos). Dijiste qué quieres. Eso hace el código corto y difícil de equivocar.
Para pensar
- ¿Qué fue fácil?
- ¿Qué fue difícil?
- ¿Otro paradigma lo habría resuelto mejor? ¿Cuál y por qué?