La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación No-Imperativa Modelos: Lenguajes Funcionales y Lógicos.

Presentaciones similares


Presentación del tema: "Programación No-Imperativa Modelos: Lenguajes Funcionales y Lógicos."— Transcripción de la presentación:

1 Programación No-Imperativa Modelos: Lenguajes Funcionales y Lógicos.

2 Agenda ג- Calculo Definición Beta – Reducciones alpha – conversión Orden de evaluación Funciones de alto nivel Definición Versión Currificada y no Currificada de funciones

3 ג -Calculo Definición: una notación / modelo computacional basada puramente en la manipulación de símbolos sintácticos, en la cual todo es una función. Una ג-expresión puede ser: Variable (ג variable. Expresión) Expresión0 Expresión1

4 ג -Calculo ffunción f (גx.x)función identidad (גx.x) z = zdevuelve z (aplicación de la función identidad al argumento “z”) Problema de asociación: El orden de aplicación es a la izquierda A – B – C (A – B) - C A – (B – C) X Y Z X (Y Z) (X Y) Z

5 ג -Calculo Otros ejemplos básico son: (גx. ___ ) una función que toma un argumento y retorna algo (גx. X + 2 ) a= a + 2se le aplica la función a el argumento “a” (גx. 7 ) a= 7una función constante devuelve la constante Ya que agarramos un poco la noción vamos con otro ejemplo un poco más complejo. (ג x.גy.y)(גx.xzxx)(גz.w) (גy.y) (גz.w)

6 ג -Calculo If “B” then “T” else “E” Si B = True devuelve “T” Si B = False devuelve “E” Primera = True = (גx.גy.x) Segunda = False = (גx.גy.y) If = (ג a.ג b.גc.abc) Condición Boleana else then Veamos juntos el formalismo del condicional como podría probarse con ג-calculo, para ello definimos algunas cosas previamente que hay que tener en cuenta:

7 ג -Calculo Si B = False devuelve “E” Si B = True devuelve “T” If “B” then “T” else “E” (גa. גb. גc.abc) True T E (גb. גc.True b c) (גc.True T c) True T E Primero T E (גx. גy.x) T E (גy.T) E = T (גa. גb. גc.abc) False T E (גb. גc.False b c) (גc.False T c) False T E Segundo T E (גx. גy.y) T E (גy.y) E = E

8 ג -Calculo Reglas de reducción: Beta-reducción Alpha-reducción Beta-reducción(גx.E) F E [X := F] (גx.ax)b ab (גa.ba)“b” esta libre “a” esta ligada Alpha-reducción(גx.E) F (גy.E [ X := Y]) β α

9 ג -Calculo Orden de evaluación Aplicativo: se escoge el “ β -redex” más interno y más a la izquierda. Normal: se escoge el “ β -redex” más externo y más a la izquierda. (גx.xxa)((גy.bycy)(גz.z)) ((גy.bycy)(גz.z)) ((גy.bycy)(גz.z)) a (b(גz.z)c(גz.z)) (b(גz.z)c(גz.z)) a (גx.xxa)(b(גz.z)c(גz.z)) Aplicativo Normal β 2 β-reducciones

10 ג -Calculo Teorema –La forma normal, si existe es una. –Si la forma normal existe, el orden de evaluación normal siempre llega a ella. Ejemplo de un ciclo infinito (גx.xx)(גx.xx) No importa si es aplicativo o normal la reduzca y llega a ella misma.

11 Funciones de alto nivel Se dice que una función es de alto nivel (también conocida como forma funcional) cuando toma una función como argumento o retorna una función como resultado. Definición: Los programadores de scheme, ML, Haskell o cualquier otro lenguaje funcional puede fácilmente definir funciones de alto nivel. (define fold (lambda (f l i) (if (null? l) i (f (car l) (fold f (cdr l) i))))) Ej. Implementación del fold de Haskell en scheme

12 Funciones de alto nivel 1.- Versión No Currificada (define sumaNC (lambda (x y) (+ x y) ) ) 2.- Versión Currificada (define sumaC (lambda (x) (lambda (y) (+ x y) ) ) ) Como se observa en el ejemplo suministrado en Scheme a la versión no currificada se le pasan ambos parámetros al mismo tiempo, en cambio a la versión currificada se le van pasando uno por uno.


Descargar ppt "Programación No-Imperativa Modelos: Lenguajes Funcionales y Lógicos."

Presentaciones similares


Anuncios Google