haskell

Páginas: 11 (2667 palabras) Publicado: 10 de febrero de 2014
Cap´
ıtulo 2. Introducci´n a Haskell
o

Introducci´n a Haskell
o
El lenguaje Haskell
• Haskell es un lenguaje funcional puro, no
estricto y fuertemente tipificado.
Puro = transparencia referencial:
No estricto = usa un orden no aplicativo
(Evaluaci´n perezosa).
o
tipificaci´n fuerte = los elementos del leno
guaje utilizables est´n clasificados en distintas caa
tegor´ o tipos.
ıas
•Un programa consiste en definiciones de funciones.
Declararla: indicar el tipo
Definirla: dar el m´todo de computo.
e
• Los principales tipos de datos b´sicos predea
finidos en Haskell son: Char, Int, Integer ,
Float, Double y Bool .

9

– – Un ejemplo de fichero Haskell
– – Calcula el siguiente entero al argumento
sucesor :: Integer → Integer
sucesor x = x + 1
– – Calcula la suma de loscuadrados de sus dos argumentos
sumaCuadrados
:: Integer → Integer → Integer
sumaCuadrados x y = x ∗ x + y ∗ y

Cap´
ıtulo 2. Introducci´n a Haskell
o

10

Funciones y operadores

Tipos simples predefinidos
El tipo Bool
Constructores: True y False

(+), (−), (∗) :: Int → Int → Int.
(↑) :: Int → Int → Int.
div , mod :: Int → Int → Int.
abs :: Int → Int.

Funciones yoperadores

signum :: Int → Int.

(& :: Bool → Bool → Bool .
&)

negate :: Int → Int.

(||) :: Bool → Bool → Bool .

even, odd :: Int → Bool .

not :: Bool → Bool .

• Podemos definir una funci´n que a partir de la
o
relaci´n
o

otherwise :: Bool .
El tipo Int
N´meros enteros de precisi´n limitada que cubren
u
o
29 29
al menos el rango [−2 , 2 − 1].
Prelude> minBound :: Int
−2147483648 :: Int
Prelude> maxBound :: Int
2147483647 :: Int

(x + y) + |x − y|
2
calcule el m´ximo de sus argumentos
a
m´ximo (x, y) =
a

m´ximo
a
:: Int → Int → Int
m´ximo x y = ((x + y) + abs(x − y)) ‘div ‘ 2
a

Cap´
ıtulo 2. Introducci´n a Haskell
o

El tipo Integer
• Los valores de este tipo son n´meros enteros
u
de precisi´n ilimitada.
o
Mismas operaciones que paraInt.

11

atan2 :: Float → Float → Float.
log, log10, exp :: Float → Float.
sqrt :: Float → Float.
...

Prelude> 2 ↑ 100
1267650600228229401496703205376 :: Integer

El tipo Double

El tipo F loat

• N´meros reales con mayor precisi´n que Float
u
o
y las mismas operaciones.

• Representan n´meros reales.
u
En notaci´n habitual: − 5.3, 1.0 ´ 1.
o
o
En notaci´n cient´
oıfica: 1.5e7 ´ 1.5e − 17
o
Funciones y operadores

El tipo Char
• Representan caracteres ( a , 1 , ? )
Algunos caracteres especiales se escriben precedi´ndolos del car´cter \:
e
a
\ n , \ t , \ , \ ” , \\

(+), (∗), (−), (/)
Funciones

:: Float → Float → Float.
(↑) :: Float → Int → Float.
(∗∗) :: Float → Float → Float.
sin, asin, cos, acos, tan, atan
:: Float → Float.

ord :: Char →Int.
chr :: Int → Char .
isUpper , isLower , isDigit, isAlpha :: Char → Bool .
toUpper , toLower :: Char → Char .

Cap´
ıtulo 2. Introducci´n a Haskell
o

Operadores de igualdad y orden
Para todos los tipos b´sicos comentados est´n
a
a
definidos los siguientes operadores binarios que
devuelven un valor booleano:
(>)
(≥)
( 10 ≤ 15
True :: Bool
Prelude> x == y
False :: BoolPrelude> x = y
True :: Bool
Prelude> b > a
True :: Bool
Prelude> False < True
True :: Bool

12

Prelude> (1 < 5) & (10 > 9)
&
True :: Bool
Prelude> True < a
ERROR
∗ ∗ ∗ Expression
∗ ∗ ∗ Term
∗ ∗ ∗ Type
∗ ∗ ∗ Does not match

:
:
:
:
:

Type error in application
True < a
True
Bool
Char

Cap´
ıtulo 2. Introducci´n a Haskell
o

13

Constructores de tipo predefinidosHaskell define tipos estructurados que permiten representar colecciones de objetos.
Tuplas
Una tupla es un dato compuesto donde el tipo de cada componente puede ser distinto.
Tuplas
Si v1, v2, . . . , vn son valores con tipo t1, t2, . . . , tn
entonces (v1 , v2, . . . , vn) es una tupla con tipo (t1, t2, . . . , tn)
Prelude> ()
() :: ()
Prelude> ( a , True)
( a , True) :: (Char , Bool )...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Haskell
  • haskell
  • programas de haskell
  • Resumen Haskell
  • Haskell
  • Haskell
  • Haskell
  • Haskell

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS