Universidad Nacional del Nordeste Faculta de Ciencias Exactas Naturales y Agrimensura
Programación III
Programación Funcional
Historia
Sus orígenes provienen del Cálculo Lambda (λ-cálculo), una teoría matemática elaborada por “Alonz “Alonzo o Church Church” ” como apoyo a sus estudios sobre computabilid computabilidad ad en la década década de 1930. Church Church usó el cálcul cálculo o lambda lambda en en 1936 1936 para para resolver el Entscheidungsproblem Church Church probó probó que no había había algoritm algoritmo o que que pudiese ser considerado como una "solución" al Entscheidungsproblem. Independientemente el mismo año, Turing prueba lo mismo con su “Máquina de Turing”.
Alonzo Church (1903-1995)
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Más Historia
David Hilbert, siguiendo con su programa con el cual propone desafíos a los matemáticos (23 Problemas Problemas de Hilbert Hilbert del 1900), 1900), formula 3 preguntas en 1928, la tercera de las cuales se conoce como: “Hilbert's “Hilbert's Entscheidun Entscheidungspr gsproblem” oblem”.
El Entscheidungsproblem: Entscheidungsproblem: es el reto en lógica simbólica de encontrar un algoritmo general que decida si una fórmula del cálculo de primer orden es lógicamente válida. El teorema de completitud de Gödel, postula que una formula lógica es lógicamente válida si y solo sí, para cada interpretación, interpretación, la misma es verdadera.
David Hilbert (1862-1943)
http://www.answers.com/topic/hilbert-s-problems http://www.answers.com/topic/entscheidungsproblem-1
Cálculo Lambda I
El cálculo lambda es un sistema formal diseñado para investigar:
la definición de función, la aplicación de una función, la recursividad.
Por ejemplo, si una función f es definida por la ecuación f(x)=t, donde t es algún término que contiene a x, entonces la aplicación f(u) devuelve el valor t[x:=u], que resulta de sustituir u en cada
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Cálculo Lambda II
La principal característica del cálculo lambda es su simplicidad, ya que permite efectuar solo dos operaciones:
Abstracción funcional: Definir funciones de un solo
argumento y con un cuerpo especifico, denotado por la siguiente terminología: λx.B. Aplicación de función: Aplicar alguna de las funciones definidas sobre un argumento real (A). Es decir (λx.B) A.
Ejemplos: → 5 (λ x. x + 2) 3
(λ f. f 3) 3) (λ (λ x. x + 2) → (λ x. x + 2) 3 → 3 + 2 → 5
Cálculo Lambda Sintaxis
Consideramos un conjunto finito de variables {a, b, c, ..., x, y, z}. El conjunto de todas las λ-expresiones por la siguiente gramática libre de contexto en BNF.
> :: ::= = > | (λ (λ . >. r>) )
Abstracción
| ( )
Aplicación
Las dos primeras primeras reglas generan generan funciones y la tercera, tercera, describe la aplicación de una función a un argumento.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Convenciones sintácticas Convenciones sintácticas para hacer más sencillas las λ expresiones 1. 2. 3. 4.
La aplicación va a ser asociativa por la izquierda: P )Q ) MNPQ (((MN ) P La abstracción es asociativa por la derecha: (λx.(λy.M )) )) λx.λy.M La aplicación es prioritaria sobre la abstracción: (λx.(MN )) )) λx.MN Se puede suprimir símbolos λ en abstracciones consecutivas: λx. λy. ... λz.M λx λxyy ...... z. z.M
Ámbito de variables
El ámbito de un identificador es la porción de un programa donde el identificador es accesible.
La abstracción λx.E introduce a la variable x cuyo ámbito es la expresión E vinculando a todas las variables x que ocurran en E. En este caso, decimos que x está está vincul vinculada ada en la la abstracción λx.E. La abstracción es similar a los
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Variables libres y ligadas
Variables Ligadas
Una variable x se dice ligada (o asociada) en una expresión E si aparece en el ámbito de una abstracción de variable instanciable x.
Bound[x] = {} Bound[λx.E] = Bound[E] ∪ {x} Bound[E1 E2] = Bound[E1] ∪ Bound[E2]
Ejemplo:
(λy. (λy.x x (λx. (λx.x x y)) y))
La primera x es libre y la otras dos ligadas. Las dos y son ligadas.
Variables Ligadas Bound Bound[λy [λy.x .x (λx. (λx.x x y)] = Boun Bound[ d[x x (λx. (λx.x x y)] y)] ∪ {y} = Bound[x] ∪ Bound[( Bound[(λx.x λx.x y)] ∪ {y} = { } ∪ Bound[( Bound[(λx.x λx.x y)] ∪ {y} = { } ∪ Bound[x y] ∪ {x} ∪ {y} = { } ∪ Bound[x] ∪ Bound[y] ∪ {x} ∪ {y} = { } ∪ { } ∪ { } ∪ {x} ∪ {y} = {x, y} Bound[λxy.x] = Bound[λx.(λy.x)] =
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Variables libres y ligadas
Variables Libres
Una variable se dice libre en E si tiene ocurrencias que no están ligadas en E. El conjunto de las variables libres de una expresión E se pueden definir recursivam recursivamente ente como sigue: Free[x] Free[λx.E] Free[E1 E2]
= {x} = Fr Free[E] – {x} = Free[E1] ∪ Free[E2]
Ejemplos:
Free[λx.x(λy.xyz)] = {z} Free[λxy.x] = ∅
Variables Libres Free[λ Free[λx.x x.x (λy.xyz (λy.xyz)] )] = Free Free[x [x (λy.x (λy.xyz yz)] )] – {x} {x} = Free[x] ∪ Free Free[( [(λy. λy.xyz xyz)] )] – {x} {x} = {x} ∪ Fre Free[xyz [xyz]] – {y} {y} – {x} {x} = {x} ∪ Free[x] ∪ Free[y] ∪ Free[z] – {y} – {x} = {x} ∪ {x} ∪ {y} ∪ {z} – {y} – {x} = {x, {x, y, z} – {y} {y} – {x} = {x, {x, z} – {x} = {z}
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Variables libres y ligadas Supongamos la expresión: (λxy.(x y) y) Las dos primeras ocurrencias de y son ligadas pero la tercera es libre.
Las primeras son los parámetros donde serán insertados los argumentos a los cuales se aplique la función. La tercera denota un valor no especificado que puede tomar una forma arbitraria (un argumento).
Relación de equivalencia
El conjunto de todas las expresiones lambda se denomina Λ.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Semántica Operacional
La evaluación de una expresión se compone de pasos de reducción donde cada uno de los pasos se obtiene por reescritura: e → e´
Se parte de un estado inicial (expresión inicial) y mediante un proceso de reescritura se obtiene un estado final (expresión final)
Cada reducción reducción de e, reemplaza reemplaza cierta subexpresión subexpresión de acuerdo con ciertas ciertas reglas; tales subexpresi subexpresiones ones se llaman redex (reducible expression).
Se considera finalizado el cómputo cuando ya no aparecen más redexes.
λ-reducciones
Las reglas de reescritura que se utilizan para reescri reescribir bir un redex redex son:
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
δ-reducción
Se llaman δ-reducción a la regla que transforma constantes. Se describe con →δ
Ejemplo ∗ (+ 1 2) (− 1) →δ (− 4 1) ∗ 3 (− 1) →δ (− 4 1) ∗ 3 3 →δ 9
α-conversión
Definiremos la relación de α-reducción (o αconversión) como sigue:
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
β-reducción
La β-reducción es el proceso de copia del argumento sobre el cuerpo de la abstracción, reemplazando todas las ocurrencias de la variable variable instanciable instanciable por el argumento. argumento. (λx.M) N
→β [x:=N] M
La λ-expresion (λx.M) N es un β-redex, es decir, se puede reducir mediante una β-reducción.
Será Será muy muy impo import rtan ante te disp dispon oner er de una una corr correc ecta ta defi defini nici ción ón de sustitución si se usa usa para para form formal aliz izar ar la redu reducc cció ión, n, pue puest sto o que que esta esta puede puede intro introdu ducir cir incon inconsis sisten tencia cias. s.
x:= =N”. ”.ee Otras notaciones: [N/x] M – M[x:=N] – “x:
β-reducción
Ejemplos
(λx. * x x) 2
(λx. * x x) 2
→β (* 2 2) →βδ 4
→δ
4
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
β-reducción
Ejercicios
Reducir las siguientes expresiones:
(λv.((λz.z) x))
((λx.((λx.x) y) z)
η-reducción
La η-reducción (también llamada extensionalidad) expresa la idea de que dos funciones son lo mismo si dan el mismo resultado para todos sus argumentos.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Equivalencia de Expresiones
Definición: En λ-cálculo dos λ-expresiones M y N que sólo difieren en sus variables ligadas son equivalentes.
Ejemplo : M = x.λy.y N = x.λz.z
M ≡ N
es equivalente a
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Captura de Variables I
Realizar el proceso de reducción en la siguiente expresión: (λx.(λx.x) (+ 1 x)) 1
1
(λx.(λx.x) (+ 1 x)) 1 [x:=1](λx.x) [x:=1](+ 1 x) (λx.1) (+ 1 1) (λx.1) 2 1
2
(λx.(λx.x) (+ 1 x)) 1 [x:=1](λx.x) [x:=1](+ 1 x) (λx.x) (+ 1 1) (λx.x) 2 2
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Captura de Variables III
Al sustituir y en el cuerpo de la abstracción (reducción), la ocurrencia libre de y reemp reemplaz lazará ará a x, transformándose en ligada:
(λxy.(x y) y)
=
λy.( y y)
El conflicto ocurre cuando en : [x:=N] λy . P y ocurre libre en N; y (Será necesario sustituir sustituir N en P (porque (porque tiene variables x libres); las y libres de N se ligarán x ocurre libre en P en λy . P)
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Sustitución: redefinición
Podríamos redefinir la sustitución usando la noción de α-equvalenci -equvalencia a y evitar de este este modo la captura captura de de variables.
[x:=N] x
[x:=N] y
[x:=N](P Q)
[x:=N](λx.P)
[x:=N](λy.P)
[x:=N](λy.P)
≡ ≡ ≡ ≡ ≡ ≡
N y
si x ≠ y
[x:=N] [x:=N]P P [x:=N] [x:=N]Q Q
λx.P λy.([x:=N]P) λz.([x:=N]([y:=z]P)) z.([x:=N]([y:=z]P))
(porque (porque x está está ligada ligada en P) si x ≠ y ; y ∉ Free(N) si x ≠ y ; y ∈ Free(N) ; z ∉ Free(N) ∪ Free (P)
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Forma Normal
Dada una λ-expresión nos interesa su forma mas reducida, reducida, que sería sería la “salida” “salida” de la función función (no contiene ningún redex).
Definición: Una λ-expre -expresió sión n está está en forma normal si
Si una λ-expresión M se reduce a una λ-expresión N en forma normal, es decir, M → * N
no contiene ningún redex.
decimos que N es una forma normal de M .
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Reducción de λ-expresiones
La reducción de un término a una forma normal puede realizarse siguiendo una variedad de estrategias posibles en la aplicación de las reglas.
Consideremos una λ-expresión (λx.y) Ω donde Ω = (λx. x.x x x) x)((λy.y y)
Esta expresión contiene dos redexes: uno interior (que es Ω) y uno exterior que es toda la expresión.
(hagamos las reducciones)
Si reducimos la exterior obtenemos y Si reducimos la interior obtenemos la misma expresión.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Ordenes de Evaluación II
Se distinguen dos ordenes de evaluación más importantes:
reduce e el redex redex más Orden Aplicativo: se reduc
reduce e el redex redex más Orden Normal: se reduc
interno de más a la izquierda.
externo externo de más más a la izquierda. izquierda. (lazy (lazy perezoso)
Este orden de evaluación asegura que si existe
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Propiedades
Propiedades de “confluencia”
Propiedades de “terminación”
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Propiedad de Terminación
Observación:
No toda secuencia de λ-reducciones termina Como en el caso visto: Ω = (λx.x x)(λy.y y)
Teorema:
Si una secuencia M →* ... termina, entonces lo hace en una forma normal. Es decir, entonces M admite forma normal.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Combinadores