Download Lenguajes de programación Haskell Historia: A
Document related concepts
Transcript
Lenguajes de programación Haskell Historia: A comienzos de los ochenta surgieron una gran cantidad de lenguajes funcionales debido a los avances en las técnicas de implementación, de los cuales se destacan: Hope, LML, Orwell, Erlang, FEL, Alfl. Esta gran cantidad de lenguajes perjudicaba el desarrollo del paradigma funcional. En septiembre de 1987, se celebró la conferencia FPCA en la que se decidió formar un comité internacional que diseñase un nuevo lenguaje puramente funcional de propósito general denominado Haskell. Al diseñar el lenguaje se observó que no existía un tratamiento sistemático de la sobrecarga con lo cual se construyó una nueva solución conocida como las clases de tipos. Características: o o o o Funciones de orden superior Evaluación perezosa Listas intencionales Programación literaria Ventajas: Brevedad Facilidad para comprender Manejo de los tipos de datos Reutilización de código y polimorfismo Evaluación perezosa y programas modulares Abstracciones poderosas y funciones como valores de primera clase Recolección de basura Desventajas: Ineficiencia en la ejecución de los lenguajes funcionales. Debido a su naturaleza dinámica, estos lenguajes siempre han sido interpretados más que compilados, resultando en una pérdida sustancial en velocidad de ejecución. Aplicaciones: o Fran (Functional Reactive Animations) es una biblioteca para realizar animaciones usando Haskell. o Pan es una biblioteca para generar imágenes usando Haskell. o Haskore es una biblioteca para generar música usando Haskell. Incluir un pequeño ejemplo (esto es con la finalidad de que revisen su sintaxis). Ordena los dígitos de un número de manera ascendente: inv::Integer->Integer->Integer inv n a |n<10=n |otherwise=(mod n 10)*(10^(a+1))+ inv (div n 10) (a+1) may::Integer->Integer may n |n<10=n | (mod n 10)<=(mod (div n 10) 10)=may (((div n 100)*10)+(mod n 10)) |otherwise=(may (div n 10)) ord::Integer->String ord 0="" ord n |mod n 10==may n=show(mod n 10)++ord (div n 10) |otherwise=ord (inv n 0) Mesografía: 1.- http://aprendehaskell.es/content/Empezando.html 2.- http://labsys.frc.utn.edu.ar/ppr-2011/Unidad%20IV%20-%20Paradigma%20funcional/Unidad%20V %20-%20Paradigma%20Funcional.pdf 3.- http://www.x.edu.uy/inet/ppt%20haskell.pdf 4.- http://program.webcindario.com/codigos/haskell.html