Tipos básicos y definiciones en Haskell.
Enviado por darwinlala • 3 de Abril de 2016 • Ensayo • 832 Palabras (4 Páginas) • 271 Visitas
[pic 2]
Programacio´n Funcional
Alberto Pardo Marcos Viera
Instituto de Computaci´on, Facultad de Ingenier´ıa Universidad de la Repu´blica, Uruguay
Tipos b´asicos y definiciones en Haskell
El tipado juega un rol importante en la produccio´n de software confiable.[pic 3]
Ayuda a encontrar errores de formacio´n e impone restricciones que van mas all´a de aspectos sint´acticos.[pic 4]
Los tipos forman parte de la especificacio´n del sistema. Son asociados a las constantes, variables, operadores y funciones.[pic 5]
Tipado en Haskell:[pic 6]
tipado fuerte: toda expresio´n debe tener un tipo[pic 7]
type safety: al ejecutar, programas bien tipados no se trancan por errores de tipo (Well-typed programs cannot ”go wrong”)[pic 8]
chequeo de tipos est´atico: o sea, en tiempo de compilacio´n[pic 9]
Boolbooleanos Charcaracteres simples Stringcadena de caracteres
Intenteros acotados Integerenteros no acotados
Floatreales Doublereales
Nota: Los nombres de tipo en Haskell deben comenzar con mayu´scula.
Las constantes de tipo Bool son denotadas True y False[pic 10]
Las operaciones primitivas son las habituales: not, && (and),[pic 11]
|| (or).
(&&) :: Bool → Bool → Bool False && b = False
True && b = b
False || b = b True || b = True
Los booleanos pueden ser comparados por igualdad: (==) :: Bool → Bool → Bool[pic 12]
(/=) :: Bool → Bool → Bool
Existen dos tipos de enteros: Int (enteros acotados) e Integer[pic 13]
(enteros no acotados).
Los operadores sobre enteros son los habituales:[pic 14]
+, −, ∗, ˆ, div , mod, abs, negate.
Usando backquotes es posible convertir una funcio´n prefija en infija. Por ejemplo, 5 ‘mod ‘ 2 en lugar de mod 5 2.[pic 15]
Como es habitual, los enteros pueden ser comparados por operadores relacionales (<, >, “, ==, /=, ...).[pic 16]
La conversio´n entre los dos tipos de enteros se debe hacer en forma expli´ıcita a trav´es de las funciones:
fromInteger :: Integer → Int
Los caracteres son codificados por la tabla ASCII. Se escriben entre comillas simples: ’a’, ’H’, ’8’.[pic 17][pic 18]
Algunos caracteres especiales se representan de esta manera:[pic 19]
’\t’ tab
’\n’ newline
’\\’ backslash
’\’’ comilla simple
’\"’ comilla doble
La conversio´n entre un caracter y su codificacio´n se hace a trav´es de las siguientes funciones:[pic 20]
fromEnum :: Char → Int toEnum :: Int → Char
El tipo String se define como lista de caracteres.[pic 21]
Constantes de tipo String se escriben entre comillas dobles: ”Funcional”, "\tHaskell"\n[pic 22]
Las funciones show y read permiten convertir entre valores de otros tipos y String .[pic 23]
Por ejemplo,
show (4 + 3) ~ "7"
read "3" ~ 3
Existen 2 tipos que representan los reales en punto flotante:[pic 24]
...