Drupal Costa Rica

Programacion Funcional Reactiva
Aplicada a JavaScript
Alberto Cole
-
https://cr.linkedin.com/in/alberto-cole-palacios-88623474
- twitter.com/hybrisCole
- skype: alberto.cole

JavaScript All The Things!
Naturaleza JS

- Porque JavaScript?
- Para qué se usaba JS?
- Para qué se usa JS actualmente?
- FRP al rescate :)
Declarativo (FP)

- Encapsula implementación del sistema
- Uso de expresiones que describen la logica sin especificar su flujo
Imperativo (OOP)
- Secuencia que cambia el estado del sistema.
- Descripción y evaluación juntas
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for(let i = 0; i < array.length; i++) {
array[i] = Math.pow(array[i], 2);
}
array; //-> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81][0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(num => Math.pow(num, 2));
Funciones Puras
- Promueven inmutabilidad
- Solo trabajan con los parámetros recibidos pero no los modifica
- No genera cambios fuera del scope de la función
- Es difícil trabajar con this
- Reutilización de codigo
- Modularizacion, una cosa a la vez

Inmutabilidad
- Datos no se modifican una vez creados
- Objetos por referencia***
- state is the root of all evil
- Comparación de objetos
- Persistencia / Histora
- Immutable.js

"functional programming refers to the declarative evaluation of pure functions to create immutable programs by avoiding externally observable side effects."
- Luis Atencio
Functional Programming In Javascript

FP vs OOP
- JavaScript utiliza ambos
- ES6 ""class""
- encapsulamiento + herencia
- inmutabilidad + composicion
- Polimorfismo de funciones = trabajan con cualquier dato
- JS esta fuertemente basado en llamados de código asincrónico, entonces tiene mas sentido en trabajar orientado a funciones
- JS Functions = Master Race
- High Order Functions

FRP
- Async Pyramid of Hell
- Dependencias Temporales
- Mix Sync/Async
- Sub categoria de FP
- Promise Monad / async/await
- Observables
- Manejar eventos de manera funcional
- Dividir complejidad en tareas pequeñas

Links de Interés
- https://www.manning.com/books/functional-reactive-programming
- https://www.manning.com/books/functional-programming-in-javascript
- https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
- github.com/hybrisCole
- https://github.com/Reactive-Extensions/RxJS
- https://dev.twitter.com/rest/public
- pubnub.com
- https://mobxjs.github.io/mobx/
- victory.formidable.com
Drupal Costa Rica
By Alberto Cole Palacios
Drupal Costa Rica
- 1,210