Marco Ordonez

Conversión alfa en el cálculo lambda

El acto de reemplazar una variable ligada por otra lo conocemos como conversión alfa. Cuando \(y \notin FV(M)\) decimos que: \(\lambda.xM \equiv_\alpha \lambda.y[y/x]M\) Si un término \(P\) cambia a \(Q\) por un cambio en sus variables ligadas decimos que \(P\) se convierte en…

Sustitución en el cálculo lambda (type free)

En posts anteriores hemos visto sobre la historia y los términos del calculo lambda, en esta ocasión veremos con un poco más de detalle la estructura de los términos y la sustitución de los mismos. Definimos \([N/x]M\) como el resultado de sustituir N en cada ocurrencia libre de…

¿Porqué usar programación funcional?

Este post está basado en el paper "Why Functional Programming Matters" de John Hughes. La programación funcional no tienen variables, una vez declarado un valor este no puede cambiar y solo esto ayuda a eliminar una gran parte de errores presentados por la reasignación. A raiz de esta inmutabilidad el…

Varianza en Scala

En la programación orientada a objetos estamos acostumbrados a la herencia pero cuando hablamos de programación funcional hablamos de polimorfismo con tipos (generics) y hablamos también de covarianza, contravarianza e invarianza para establecer el grado de detalle en los genéricos. Cuando hablamos de covarianza nos referimos a subtipos, en Scala…

Términos del cálculo lambda (type free)

En este post veremos con más detalle la definición y reglas de los términos en el cálculo lambda. El conjunto de expresiones lambda está definido de la siguiente forma: Todas las variables son términos lambda (x, y, z...). También son llamadas átomos o término atómico. Si M y N son…

Un primer vistazo al cálculo lambda

En la actualidad existe tan poca información en español sobre el cálculo lambda que he decidido escribir este post para compartir un poco acerca del tema de una forma que espero sea fácil de entender. El origen del cálculo lambda se da en la década de 1930 por Alonzo Church,…