Anda di halaman 1dari 5

Ingeniera en Sistemas Computacionales

Resumen

Nombre: Jose Luis Moo Noh


Asignatura: Programacin lgica y

Nombre del profesor: Lic. Antonio de

funcional

Jess Cab Balam

Unidad: 3.- evaluacin perezosa

Actividad: Resumen, evaluacin


perezosa

Fecha de entrega: 30 de abril de 2015


Fuentes de informacin:
Betarte, G. (2015). Compilacion de Lenguajes Funcionales Perezosos. Lenguajes
Funcionales perezosos, 1-25.

Ttulo:
Evaluacin perezosa
Introduccin:
La base terica de la programacin imperativa fue dada por Alan Turing en los
aos treinta. Tambin la teora de funciones como modelo de computacin
proviene de los aos veinte y treinta. Los fundadores son, entre otros, M.
Schonfinkel. Haskell Curry y Alonso Church. Fue en el comienzo de los aos
cincuenta cuando a alguien se le ocurri usar esta teora efectivamente, como
base de un lenguaje de programacin. El lenguaje de programacin Lisp de John
McCarthy fue el primer lenguaje de programacin funcional y fue el nico por
muchos aos. Debido a la creciente complejidad de los programas de ordenador,
se hizo necesaria una mayor verificacin del programa por parte del ordenador.
Por ello el tipado adquiri una gran importancia. Por eso no es de extraar que
en los ochentas se creara un gran nmero de lenguajes funcionales tipados.
Contenido:
(Betarte, 2015)

Pgina 1 de 5

Ingeniera en Sistemas Computacionales


Resumen

Calculo lambda, un clculo que captura el aspecto computacional de la nocin


de funcin. Los lenguajes funcionales modernos pueden ser entendidos como
un embellecimiento sintctico de

Pgina 2 de 5

Ingeniera en Sistemas Computacionales


Resumen

Teorema: si es confluente entonces para toda expresin es su forma normal,


si existe, es nica.
Estrategias de reduccin, reglas de computacin para seleccionar pasos de
reduccin:
-

Leftmost-Outermost(Normal order)

Leftmost-Innermost(Applicative order)

Call-by-Name

Call-by-Value

Toda expresin lambda e tiene un punto fijo e tal que (e e)= e

Toda funcin recursiva puede ser escrita sin usar recursin:

Tesis de church: las funciones de N en N efectivamente computables son


aquellas definidas en el clculo lambda.
El lenguaje LISP: un lenguaje algebraico para el procesamiento de listas,
cuenta con sus respectivas caractersticas como}}}.
-

La expresin condicional y su uso en recursin

El uso de listas y funciones de alto orden sobre ellas

El uso de garbage collecting.

El uso de S-expressions para representar programas y datos.

El lenguaje Iswim, mecanizacin de evaluacin de expresiones usando una


maquina abstracta, trae consigo nuevas innovaciones como:
-

Sintctica
o Notacin infija
o Expresiones lety where: definiciones mutuas y recursivas
o Uso de layout

Semntica
o nfasis en generalidad: lenguaje rico sintcticamente en funcin
de un lenguaje pequeo y muy expresivo.
Pgina 3 de 5

Ingeniera en Sistemas Computacionales


Resumen

o nfasis en razonamiento ecuacional.


o SECD como simple mquina abstracta en la cual se ejecutan
expresiones funcionales.
Se presentan las siguientes caractersticas de los lenguajes de programacin
funcional:
Funciones de alto orden, Funciones son consideradas first-class values:
abstraccin sobre un mecanismo de abstraccin.

Alto orden como un mecanismo de modularizacin

Evaluacin perezosa, Reglas de reduccin con orden normal son las ms


seguras, en el sentido de que garantizan la produccin de forma normal (si
existe). Permite emular recursin usando Y. Implementacin ingenua puede ser
muy ineficiente

La expresin (* 5 4) es calculada tantas veces como ocurrencias de x.

El elemento es evaluado antes que la B-reduccin se efecte.


Desventajas: Puede evaluar innecesariamente (Ej. (\x.\y.x) 5 ((\x.x x) (\x.x x))).
Exige reduccin especial para implementar recursin
La evaluacin perezosa libera al programador de los problemas concernientes
al orden de evaluacin. Provee la posibilidad de computar usando estructuras
de datos infinitas. Separacin de datos de control.
nats = 0 : map succ nats
Pgina 4 de 5

Ingeniera en Sistemas Computacionales


Resumen

filter p [] = []
filter p (x:xs) = if (p x) then (x:rest) else filter p xs
filter p nats puede ser escrito sabiendo que el grado de computacin de la lista
ser determinado por el contexto. Al no tener control operacional puede ser
compuesta con otras funciones modularmente.
Abstraccin de datos
Tipos algebraicos de datos (o concretos)
data List a = Nil | Cons a (List a)
data Tree b = Empty | Node b (List (Tree b))
List, Tree: constructores de tipos ( List :: Type -> Type)
Nil, Cons, Empty, Node: constructores de datos (o simplemente constructores)
Abreviacin (sinnimos)
type Intree = Tree Int
type Flattener = Intree -> [Int]
Ecuaciones y pattern-matching, Uso de razonamiento ecuacional en el diseo
y construccin de programas. La ausencia de efectos laterales permite el uso de
r. e. Sintaxis tambin puede ayudar: escribir la definicin de una funcin como
una secuencia de ecuaciones.
Pattern Matching es el concepto asociado al chequeo estructural de un dato
respecto de una estructura esperada. El uso de pattern matching tiene la ventaja
de simplificar mucho la codificacin, ya que slo escribimos la forma de lo que
esperamos y podemos desglosar los componentes de estructuras complejas.
Una desventaja asociada a usar pattern matching en vez de funciones para
acceder a los elementos de las tuplas es que nuestro cdigo se ver muy
afectado ante un cambio en las estructuras manejadas. El simple hecho de
agregar un elemento ms a la tupla que representa a nuestro elemento de
dominio provocar un cambio en el tipo del mismo y el mismo se propagar en
todos los lugares donde se haya utilizado esta estructura directamente.
Pgina 5 de 5

Anda mungkin juga menyukai