Programaci - PowerPoint PPT Presentation

1 / 12
About This Presentation
Title:

Programaci

Description:

Definici n: una notaci n / modelo computacional basada. puramente en la manipulaci n de ... Veamos juntos el formalismo del condicional como podr a probarse ... – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 13
Provided by: Invi97
Category:

less

Transcript and Presenter's Notes

Title: Programaci


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
f función f (?x.x) función identidad (?x.x) z
z devuelve z (aplicación de la función
identidad al argumento z)
A B C
X Y Z
X (Y Z)
(A B) - C
A (B C)
(X Y) Z
Problema de asociación El orden de aplicación es
a la izquierda
5
?-Calculo
  • Otros ejemplos básico son
  • (?x. ___ ) una función que toma un argumento
    y retorna algo
  • (?x. X 2 ) a a 2 se le aplica la función a
    el argumento a
  • (?x. 7 ) a 7 una 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
Veamos juntos el formalismo del condicional como
podría probarse con ?-calculo, para ello
definimos algunas cosas previamente que hay que
tener en cuenta
  • Si B True devuelve T
  • Si B False devuelve E

If B then T else E
Primera True (?x.?y.x) Segunda False
(?x.?y.y) If (? a.? b.?c.abc)
else
Condición Boleana
then
7
?-Calculo
If B then T else E
Si B False devuelve E
Si B True devuelve T
(?a. ?b. ?c.abc) True T E
(?a. ?b. ?c.abc) False T E
(?b. ?c.True b c)
(?b. ?c.False b c)
(?c.True T c)
(?c.False T c)
True T E
False T E
Primero T E
Segundo T E
(?x. ?y.x) T E
(?x. ?y.y) T E
(?y.T) E
T
(?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)

a
9
?-Calculo
Aplicativo se escoge el ß -redex más interno
y más a la izquierda.
Orden de evaluación
Normal se escoge el ß -redex más externo
y más a la izquierda.
(?x.xxa)((?y.bycy)(?z.z))
Normal
Aplicativo
ß
((?y.bycy)(?z.z)) ((?y.bycy)(?z.z)) a
(?x.xxa)(b(?z.z)c(?z.z))
2 ß-reducciones
2 ß-reducciones
(b(?z.z)c(?z.z)) (b(?z.z)c(?z.z)) a
(b(?z.z)c(?z.z)) (b(?z.z)c(?z.z)) a
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)
(?x.xx)(?x.xx)
No importa si es aplicativo o normal la reduzca
y llega a ella misma.
11
Funciones de alto nivel
Definición
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.
Los programadores de scheme, ML, Haskell o
cualquier otro lenguaje funcional puede
fácilmente definir funciones de alto nivel.
Ej. Implementación del fold de Haskell en scheme
(define fold (lambda (f l i) (if (null? l) i
(f (car l) (fold f (cdr l) i)))))
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.
Write a Comment
User Comments (0)
About PowerShow.com