HasKell

Page 1

Instituto Tecnológico Superior de Huatusco

Docente: MSC. Olivia Labastida Puertos Haskell E-mail: olabastidap@huatusco.tecnm.mx


Haskell es un lenguaje funcional (donde todo se hace con llamadas a funciones), estático, implícitamente tipado (los tipos los revisa el compilador, pero no hace falta declararlos), perezoso (nada se hace hasta que es completamente necesario).


Compilador El compilador de Haskell más común es GHC. Está disponible para GNU/Linux, FreeBSD, MacOS, Windows, y Solaris. • GHC. Compila librerías y aplicaciones escritas en Haskell a código binario. • GHCI. Es un interprete que permite escribir código Haskell y obtener un resultado inmediato.



Expresiones Simples

Es

posible escribir varias expresiones matemáticas directamente en ghci y obtener un resultado. Prelude es el prompt por defecto de GHCi.


Expresiones Simples

Las cadenas van entre comillas dobles “texto”. Se puede concatenar con ++


Expresiones Simples

Las funciones se llaman colocando los argumentos directamente después del nombre de la función. No hay paréntesis en la llamada a la función:


Funciones predefinidas en Haskell


La consola

Las Acciones I/O se pueden usar para leer y escribir en la consola. putSrt | putSrtLn imprime solo cadenas Print imprime cualquier valor


La consola

La

lectura

se

puede hacer con <haske>getLine</hask> (que retorna una cadena String) o readLn

(que retorna un valor de cualquier tipo que se desee). El símbolo <- se usa para asignar un nombre


Bloque Do

Existe otra forma de escribir los bloques do. Si se suprimen las llaves y los punto y coma, la indentación se vuelve importante. Esto funciona muy bien en ghci, pero podemos intentar.


Tipos Simples

Haskell hace referencia de tipos. Generalmente no es necesario declararlos a menos que así se quiera. Si desea declarar tipos, se puede usar


Tipos Simples Existen 5 tipos númericos en el “preludio” de Haskell: •

Int. es un entero con al menos 30 bits de precisión.

Integer es un entero con precisión ilimitada.

Float es un numero de punto flotante con precisión simple.

Double es un numero de punto flotante con precisión

doble. •

Rational es un tipo fraccionario, sin error de redondeo.


Datos Estructurados

Los tipos de datos básicos se pueden combinar fácilmente de dos maneras: Listas, que van entre [corchetes], y tuplas, que van entre (paréntesis). Las listas se usan para mantener múltiples valores del mismo tipo.


Datos Estructurados

Las cadenas son listas de caracteres.


Datos Estructurados

Las tuplas mantienen un número fijo de valores, que pueden tener tipos distintos.

El ultimo ejemplo usa zip, una función que convierte dos listas en una lista de tuplas.


Datos Estructurados

Las listas se usan mucho en Haskell. Existen varias funciones que sirven para hacer cosas útiles con ellas.


Definición de Funciones


Otras Expresiones

La expresión let define nombres temporales. (Esto es usando layout otra vez. Se puede usar {llaves}, y separar los nombres con punto y comas, si se prefiere).


Otras Expresiones

La expresión case produce ramas de decisión. La etiqueta especial _ significa "cualquier otra cosa".


Ejercicios 1.

Definir la función media6, de tal manera que (media6 a b c d e f) es la media aritmética de los números a b c d e f. Ejemplo:

media6 15 4 2 6 7 8 = 7


Ejercicios 2. Sumar monedas de tal manera que (sumaMonedas a b c d) al sumar sea de acuerdo a las siguientes denominaciones en pesos: $.50, $1, $2, $5. Ejemplo:

sumaMonedas 0 2 4 6 = 40 sumaMonedas 2 0 0 0 = 1


Ejercicios 3. Calcular el área de un triangulo (areaTriangulo base altura). Ejemplo:

areaTriangulo 4 8 = 16


Ejercicios 4. Escribir una función maxTres tal que (maxTres x y z) determina el máximo de x, y y z. ejemplo:

maxTres 5 3 1 = 5 maxTres 7 9 5 = 9


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.