Tema 2: Introducción a la programación con Haskell

1 El sistema GHC

2 Iniciación a GHC

2.1 Inicio de sesión con GHCi

I1M> ghci
GHCi, version 6.10.3: http://www.haskell.org/ghc/  :? for help
ghci>

2.2 Cálculo aritmético

Operaciones aritméticas

ghci> 2+3
5
ghci> 2-3
-1
ghci> 2*3
6
ghci> 7 `div` 2
3
ghci> 2^3
8

Precedencia y asociatividad

ghci> 2*10^3
2000
ghci> 2+3*4
14
ghci> 2^3^4
2417851639229258349412352
ghci> 2^(3^4)
2417851639229258349412352
ghci> 2-3-4
-5
ghci> (2-3)-4
-5

2.3 Cálculo con listas

Seleccionar y eliminar

head [1,2,3,4,5]  ==  1
tail [1,2,3,4,5]  ==  [2,3,4,5]  
[1,2,3,4,5] !! 2  ==  3
take 3 [1,2,3,4,5]  ==  [1,2,3]
drop 3 [1,2,3,4,5]  ==  [4,5]
length [1,2,3,4,5]  ==  5
sum [1,2,3,4,5]  ==  15
product [1,2,3,4,5]  ==  120
[1,2,3] ++ [4,5]  ==  [1,2,3,4,5]
reverse [1,2,3,4,5] ==  [5,4,3,2,1]

2.4 Cálculos con errores

Ejemplos de cálculos con errores

ghci> 1 `div` 0
*** Exception: divide by zero
ghci> head []
*** Exception: Prelude.head: empty list
ghci> tail []
*** Exception: Prelude.tail: empty list
ghci> [2,3] !! 5
*** Exception: Prelude.(!!): index too large

3 Aplicación de funciones

3.1 Aplicación de funciones en matemáticas y en Haskell

3.2 Prioridad de la aplicación de funciones

Matemáticas Haskell
f(x) f x
f(x,y) f x y
f(g(x)) f (g x)
f(x,g(y)) f x (g y)
f(x)g(y) f x * g y

4 Guiones Haskell

4.1 El primer guión Haskell

doble x     = x+x
cuadruple x = doble (doble x)
ghci> cuadruple 10
40
ghci> take (doble 2) [1,2,3,4,5,6]
[1,2,3,4]
factorial n = product [1..n]
media ns    = sum ns `div` length ns
ghci> factorial (doble 2)
24
ghci> doble (media [1,5,3])
6

4.2 Nombres de funciones

Nombres de funciones

sumaCuadrado, suma_cuadrado, `suma
case  class   data     default  deriving  do      else
if    import  in       infix    infixl    infixr  instance
let   module  newtype  of       then      type    where

4.3 La regla de la indentación

a = b + c
    where
      b = 1
      c = 2
d = a * 2

4.4 Comentarios en Haskell

-- (factorial2 n) es el factorial del número n.
factorial2 n = product [1..n]
{- (factorial3 n) es el factorial del número n. 
   Por ejemplo, factorial 3  ==  6 -}
factorial3 n = product [1..n]

5 Bibliografía



Universidad de Sevilla

José A. Alonso Jiménez
Grupo de Lógica Computacional
Dpto. de Ciencias de la Computación e I.A.
Universidad de Sevilla