Está en la página 1de 20

Dr.

Julio Castillo
Cátedra: Paradigmas de Programación – UTN-
FRC 2016
Haskell es un lenguaje puramente funcional que
ofrece:
1. Incremento substancial de la productividad de
los programas.
2. Código más claro y más corto y mas fácilmente
mantenible.
3. Tiempos de computación más cortos.

 Un programa consiste en definiciones de


funciones.
 Los principales tipos de datos básicos
predefinidos en Haskell son: Char, Int, Integer,
Float, Double y Bool
 Función sucesor : Calcula el siguiente entero
sucesor :: Integer -> Integer
sucesor x = x + 1
 Calcula la suma de los cuadrados de sus dos
argumentos
sumaCuadrados :: Integer -> Integer ->
Integer
sumaCuadrados x y = x * x + y * y
- Ir a : http://www.haskell.org/hugs/
- Sección Download Hugs
 Operaciones aritméticas en Haskell:
Prelude> 2+1
3
Prelude> 2-3
-1
Prelude> 5*3
15
Prelude> 7 `div` 2
3
Prelude> 2^4
16
Prelude> (2+3)*8
40
Prelude> product [3..7]
2520
Prelude: Indica que el sistema está listo para leer una expresión,
evaluarla y
mostrar el resultado de la misma en la interfaz de consola del usuario.
 Otras operaciones :
Prelude> reverse "Hugs is cool"
"looc si sguH“
Comandos :
 Para salir del interprete
:q
 Usar control-C o control-Break, para interrumpir
la evaluación de una expresión
 Cargar un archivo “factorial.hs”
Prelude> :load factorial.hs
 Los archivos son de texto plano y deben tener
la extensión .hs.
 Se pueden hacer 2 tipos de comentarios:
- Comentario simple:
Usando -- permite comentar toda una línea
- Comentario Anidado:
Usando comentario anidado comienza con {-
y termina en -}
 Supongamos que queremos cargar un
archivo denominado “Archivo.hs”. Para ello
se debe utilizar el comando load de la
siguiente manera:
 > :l Archivo.hs
Reading script file “Archivo.hs"

El contenido del Archivo.hs es:


factorial n = product [1..n]

cuadrado::Integer -> Integer


cuadrado x = x * x
 Calcular el factorial de 4:
> factorial 4
24
 Calcular el cuadrado de 7:

> cuadrado 7
49
 Calcular el factorial del cuadrado de 9:

> factorial (cuadrado 9)


??
 Definición alternativa para calcular el factorial
de un número:
factorial :: Integer -> Integer
factorial 0 = 1
factorial n = n * factorial (n - 1)
 Calcular el menor de 2 enteros:

menor::(Integer, Integer) -> Integer


menor (x,y) = if x <= y then x else y
 Determinar cual de los siguientes números es
menor e informarlo por consola:
- el factorial de 34
- el cuadrado de 6579
 Determinar cual de los siguientes números es
menor e informarlo por consola:
- el factorial de 34
- el cuadrado de 6579

Solución :
> menor (factorial 34,cuadrado 6579)
43283241
 Definir la función “absoluto” que retorne el
valor absoluto de un entero.
 Definir la función “absoluto” que retorne el
valor absoluto de un entero.

Solución :
absoluto :: Integer -> Integer
absoluto x
| x >= 0 = x
| x < 0 = -x
 Informar la suma de los cuadrados de A y B, donde A es
el menor número entre el factorial de 56 y el cuadrado
de 154, y donde B es igual a 6888.
 Informar la suma de los cuadrados de A y B, donde A es el
menor número entre el factorial de 56 y el cuadrado de 154, y
donde B es igual a 6888.

 Solución:
--Definiciones necesarias :
factorial n = product [1..n]

cuadrado::Integer -> Integer


cuadrado x = x * x

menor::(Integer, Integer) -> Integer


menor (x,y) = if x <= y then x else y

sumaCuadrados:: Integer -> Integer -> Integer


sumaCuadrados x y = x*x + y*y

Resultado:
> sumaCuadrados (menor(factorial 56, cuadrado 154)) 6888
609893200
 Escribir una función que nos permita calcular
la cantidad de raíces de una ecuación de
segundo grado.
 Caso general:

Ayuda:
 Escribir una función que nos permita calcular
la cantidad de raíces de una ecuación de
segundo grado.
 Caso general:

Ayuda:

 Solución:
numeroDeRaices a b c
| discr>0 = 2
| discr==0 = 1
| discr<0 = 0
where discr = b*b - 4*a*c

También podría gustarte