Resumen
funcional
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
Pgina 2 de 5
Leftmost-Outermost(Normal order)
Leftmost-Innermost(Applicative order)
Call-by-Name
Call-by-Value
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
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