Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
sobre Haskell
Elaborado por:
Carlos Hctor Cruz Lpez
Haskell
Para empezar a hablar sobre haskell, primero es importante tener en claro que es
la programacin funcional. La programacin funcional es un paradigma de
programacin que se basa en el uso de funciones matemticas para resolver
problemas. Algunos lenguajes de programacin funcional son Lisp, scheme, AP y
Haskell. Este ultim mencionado ser del que hablaremos, describiendo sus
principales caractersticas y como se programa.
Las principales caractersticas de la programacin funcional son:
Programas concisos.
Funciones recursivas.
La consola nos indica que el sistema est listo para leer una expresin, evaluarla y
escribir su resultado.
Operaciones aritmticas
Sintaxis
x+y
Descripcin
Es la suma de x e y.
xy
Es la resta de x e y.
x/y
Es el cociente de x entre
y.
Es la multiplicacin de x
x*y
Ejemplo
Prelude>
19
Prelude>
8
Prelude>
5.0
Prelude>
360
10 + 9
10 - 2
10 / 2
18 * 20
2
x^y
div x y
mod x y
por y.
Es x elevado a y.
Es la divisin entera de x
entre y.
Es el resto de x entre y
Prelude> 2 ^ 8
256
Prelude> div 10 2
5
Prelude> mod 230 25
5
Descripcin
Es la conjuncin de x e y.
x || y
Es la disyuncin de x e y.
not x
x == y
x /= y
x<y
x <= y
x>y
x >= y
Se verifica si x es distinto
de y.
Se verifica si x es menor
a y.
Se verifica si x es menor
o igual que y.
Se verifica si x es mayor
que y.
Se verifica si x es mayor
o igual que y.
Ejemplos
Prelude>
False
Prelude>
True
Prelude>
True
Prelude>
True
Prelude>
False
Prelude>
False
Prelude>
True
Prelude>
False
Prelude>
True
Prelude>
False
Funciones predefinidas
Nombre
succ
pred
min
Descripcin
Devuelve el sucesor de
un nmero o carcter.
Sintaxis
succ <numero o
carcter>
Devuelve el predecesor
de un nmero o
carcter.
pred <numero o
carcter>
Devuelve el mnimo de
dos valores.
min <numero>
<numero>
Ejemplo
Prelude>
91
Prelude>
'b'
Prelude>
7
Prelude>
-9
Prelude>
Prelude>
10
succ 90
succ 'a'
pred 8
pred (-8)
min 10 18
max
pi
sqrt
cos
cosh
asin
tan
gcd
lcm
exp
log
round
even
Devuelve el mximo de
dos valores
Devuelve el valor de pi
()
Calcula la raz cuadrada
de un valor.
Calcula el coseno de un
valor en radianes
Calcula el coseno
hiperblico de un valor
en radianes
Calcula el arco seno de
un valor en radianes
Calcula la tangente de
un valor en radianes
Calcula el mximo
comn divisor de dos
valores.
Calcula el minimo
comn mltiplo de dos
valores.
Calcula el exponencial
de un valor.
Calcula el logaritmo
neperiano de un valor.
Redondea un valor
numrico.
Se verifica si un valor es
par o no.
max <numero>
<numero>
Pi
sqrt <numero>
cos <numero>
cosh <numero>
asin <numero>
Prelude> max 87 95
95
Prelude> pi
3.141592653589793
Prelude> sqrt 81
9.0
Prelude> cos 90
-0.4480736161291701
Prelude> cosh 3
10.067661995777765
gcd <numero1>
<numero2>
lcm <numero1>
<numero2>
Prelude> lcm 8 6
24
exp <numero>
Prelude> exp 1
2.718281828459045
Prelude> log 10
2.302585092994046
Prelude> round 8.9
9
Prelude> even 8
True
tan <numero>
log <numero>
round <valor>
even <numero>
Descripcin
Retorna el primer
elemento de la lista.
Sintaxis
Ejemplo
head [lista]
last
Retorna el ltimo
elemento de la lista.
last [lista]
tail
tail [lista]
Prelude> head
[12,11,19,22,8,27]
R = 12
Prelude> last
[1,5,100,22,8,80]
R = 80
Prelude> tail
[112,1,1985,22,8,20]
R = [1,1985,22,8,20]
Prelude> init
[191,1985,12,9,27]
R = [191,1985,12,9]
Prelude> length
init
length
init [lista]
length [lista]
elementos de la lista.
take
drop
takeWhile
dropWhile
reverse
concat
words
unwords
elem
Retorna si un elemento
esta o no en la lista.
notelem
Lo opuesto a elem.
[11,85,22,8,27]
R = 5
take <n> [lista] Prelude> take 2
[91,81,985,22,8]
R = [91,81]
drop <n> [lista] Prelude> drop 2
[99,100,195,22,8]
R = [195,22,8]
takeWhile
Prelude> takeWhile
(cond.) [cond]
(<=5) [1..10]
R = [1,2,3,4,5]
dropWhile (cond) Prelude> dropWhile
[cond]
(<=10) [1..15]
R = [11,12,13,14,15]
reverse [lista]
Prelude> reverse
[91,1,195]
R = [195,1,91]
concat
Prelude> concat
[e1,e2,e3]
["hola","a","todos"]
R = "holaatodos"
words e1 e2 e3 Prelude> words "Hola
a todos"
R =
["Hola","a","todos"]
unwords
Prelude> unwords
[e1,e2,e3] ["hola","a","todos"]
"hola a todos"
elem e1
Prelude> elem "t"
[e1,e2,e3] ["a","f","r","t"]
R = True
Notelem e1
Prelude> notElem "t"
[e1,e2,e3] ["a","f","t"]
False