Haskell

Páginas: 12 (2829 palabras) Publicado: 25 de enero de 2013
Cap´ ıtulo 2. Introducci´n a Haskell o

9

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 • Unprograma 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 .

– – Un ejemplo de fichero Haskell – – Calcula el siguiente entero al argumento sucesor :: Integer → Integer sucesor x = x + 1 – – Calcula la suma de los cuadrados de sus dosargumentos 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
Funciones y operadores

(+), (−), (∗) :: Int → Int → Int. (↑) :: Int → Int → Int. div , mod :: Int → Int → Int. abs :: Int → Int. signum :: Int → Int. negate ::Int → Int. even, odd :: Int → Bool . • Podemos definir una funci´n que a partir de la o relaci´n o (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

(& :: Bool → Bool → Bool . &) (||) :: Bool → Bool → Bool . not :: Bool → Bool . otherwise :: Bool . El tipo Int N´meros enteros de precisi´n limitadaque cubren u o 29 29 al menos el rango [−2 , 2 − 1].
Prelude> minBound :: Int − 2147483648 :: Int Prelude> maxBound :: Int 2147483647 :: Int

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

11

El tipo Integer • Los valores de este tipo son n´meros enteros u de precisi´n ilimitada. o Mismas operaciones que para Int.
Prelude> 2 ↑ 100 1267650600228229401496703205376 :: Integer

atan2 :: Float →Float → Float. log, log10, exp :: Float → Float. sqrt :: Float → Float. ... El tipo Double • N´meros reales con mayor precisi´n que Float u o y las mismas operaciones. El tipo Char • Representan caracteres ( a , 1 , ? ) Algunos caracteres especiales se escriben precedi´ndolos del car´cter \: e a \ n , \ t , \ , \ ” , \\
Funciones

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

(+), (∗), (−), (/) :: 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

12

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: (>) (≥) ( (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

El tipo de los dosargumentos para cualquier aplicaci´n de los operadores anteriores debe ser el o mismo:
Prelude> 10 ≤ 15 True :: Bool Prelude> x == y False :: Bool Prelude> x = y True :: Bool Prelude> b > a True :: Bool Prelude> False < True True :: Bool

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

13

Constructores de tipo predefinidos
Haskell define tipos estructurados que permiten representar colecciones deobjetos. 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 ) Prelude> ( a , True, 1.5) ( a , True, 1.5) :: (Char , Bool , Double)

• Las...
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