Miguel de Cervantes y Saavedra - Don Quijote de la Mancha - Ebook:
HTML+ZIP- TXT - TXT+ZIP

Wikipedia for Schools (ES) - Static Wikipedia (ES) 2006
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Haskell - Wikipedia, la enciclopedia libre

Haskell

De Wikipedia, la enciclopedia libre

Haskell
Paradigma: Funcional, no estricto, modular
Apareció en: 1990
Diseñado por: Universidad de Yale, Universidad de Glasgow
Tipo de dato: Fuerte, estático
Implementaciones: GHC, Hugs, NHC, Yhc, JHC
Influido por: Miranda, ML, Gofer
Ha influido: Python

Haskell es un lenguaje de programación puramente funcional de propósito general. Su nombre proviene del lógico Haskell Curry.

En los años 1980 se constituyó un comité cuyo objetivo era crear un lenguaje funcional que reuniera las características de los múltiples lenguajes funcionales de la época, como Miranda, y resolviera la confusión creada por los múltiples lenguajes que seguían este paradigma. El lenguaje evoluciona rápidamente con y (ver más abajo) como los representantes actuales del estándar de facto. El último estándar semi-oficial es Haskell 98, con la intención de especificar una versión mínima y compatible del lenguaje como base para futuras extensiones y para su enseñanza.

Las características más interesantes de Haskell incluyen el soporte para tipos de datos y funciones recursivas, listas, tuplas, guardas y reconocimiento de patrones. La combinación de las mismas pueden resultar en algunas funciones casi triviales cuya versión en lenguajes imperativos pueden llegar a resultar extremadamente tediosas de programar. Haskell es, desde 2002, uno de los lenguajes funcionales sobre los que más se ha investigado. Se han desarrollado muchas variantes:

  • Versiones paralelas del MIT y Glasgow, ambas denominadas Parallel Haskell.
  • Más versiones paralelas y distribuidas de Haskell llamadas Distributed Haskell (anteriormente Goffin) y Eden
  • Una versión con ejecución especulativa: Eager Haskell
  • Varias versiones orientadas a objetos: Haskell++, O'Haskell y Mondrian.
  • Una versión educativa llamada Gofer desarrollada por Mark Jones que fue suplantada por HUGS (ver abajo).

Para información más detallada, referirse al sitio oficial o a los links al final de este artículo.

Tabla de contenidos

[editar] Historia

[editar] Introducción a Haskell

[editar] Tipos simples predefinidos

[editar] El tipo Bool

Los valores con este tipo representan expresiones lógicas cuyo resultado puede ser True o False.

[editar] Funciones y operadores

  • (&&) :: Bool -> Bool -> Bool. Conjunción lógica.
  • (||) :: Bool -> Bool -> Bool. Disyunción lógica.
  • not :: Bool -> Bool. Negación lógica.
  • otherwise :: Bool. Función constante que devuelve el valor True.

[editar] El tipo Int

Los valores de este tipo son números enteros de precisión limitada que cubren al menos el intervalo [-2^29, 2^29 - 1] ([minBound, maxBound]).

[editar] Funciones y operadores

  • (+), (-), (*) :: Int -> Int -> Int. Suma, resta y producto de enteros.
  • (^) :: Int -> Int -> Int. Operador potencia con exponente natural.
  • div, mod :: Int -> Int -> Int. Cociente y residuo de enteros.
  • abs :: Int -> Int. Valor absoluto.
  • signum :: Int -> Int. Devuelve -1, 1 o 0 según el signo del argumento.
  • negate :: Int -> Int. Invierte el signo del argumento.
  • even, odd :: Int -> Bool. Comprueban la naturaleza par o impar de un número.

[editar] El tipo Integer

Los valores de este tipo son números enteros de precisión ilimitada que tienen las mismas funciones y operadores del tipo Int.

[editar] El tipo Float

Los valores de este tipo son números reales

[editar] Funciones y operadores

  • (+), (-), (*), (/), (^):: Float -> Float -> Float. Suma, resta, producto, división real y potencia de exponente entero.
  • abs, signum, negate :: Int -> Int. Valor absoluto, signo y negación.
  • (**) :: Float -> Float. Potencia de exponente real

[editar] El tipo Double

Los valores de este tipo son números reales, de mayor rango y con aproximaciones más precisas que los de tipo Float.

[editar] El tipo Char

Los valores de este tipo son caracteres.

[editar] Tuplas

Los elementos que forman una tupla pueden ser de distintos tipos.

Por ejemplo: ('a',True,3)

[editar] Listas

Los valores de este tipo son una colección de elementos del mismo tipo. Existen dos constructoras para listas:

  • [Elementos_separados_por_comas] , por ejemplo: [1,2,3,4]
  • (primer_elemento:resto_de_la_lista) , por ejemplo: (1:(2:(3:(4:[]))))

[editar] Implementaciones

Todas las siguientes implementaciones cumplen en su totalidad, o casi en su totalidad, con los estándares de Haskell 98 y son distribuidas bajo licencias Open Source. No se conocen implementaciones comerciales del lenguaje.

  • Hugs ([1]) es un intérprete. Ofrece una compilación rápida de los programas y un tiempo razonable de ejecución. También viene con una librería gráfica muy simple, lo que lo hace adecuado para quienes lo están aprendiendo. Sin embargo no es una implementación a despreciar, es una de las más livianas y compatibles.
  • GHC ([2]): "Glasgow Haskell Compiler" compila a código nativo en una variedad de arquitecturas y puede también compilar a C. Es, probablemente, uno de los compiladores más populares e incluso tiene unas cuantas librerías (por ejemplo OpenGL) que, aunque muy útiles, sólo funcionan bajo GHC.
  • nhc98 ([3]) es otro compilador con un mejor tiempo de ejecución que Hugs. Esta implementación se enfocó a minimizar la utilización de la memoria convirtiéndola en una buena opción para arquitecturas lentas o antiguas.
  • HBC ([4]) es otro compilador a código nativo de Haskell. Si bien no ha sido actualizado en el último tiempo sigue siendo bastante útil.
  • Helium ([5]) es un nuevo dialecto de Haskell. Se centró en ser muy fácil de aprender; por ello, no incluye soporte para todo el estándar de Haskell, haciendo que no sea totalmente compatible.

[editar] Ejemplos

  --Función recursiva para calcular el factorial de un número
  factorial :: Integer -> Integer
  factorial 0 = 1
  factorial n = n * factorial (n - 1)
  --Función recursiva para calcular el factorial de un número usando pseudónimos
  factorial :: Integer -> Integer
  factorial 0         = 1
  factorial m@(n + 1) = m * factorial n
  --Función para calcular las raíces de una ecuación de segundo grado a partir de sus coeficientes
  raíces :: Float -> Float -> Float -> (Float, Float)
  raíces a b c
   | disc >= 0 = ((-b + raizDisc) / denom,
                  (-b - raizDisc) / denom)
   | otherwise = error "La ecuación tiene raíces complejas"
     where
        disc = b*b - 4*a*c
        raizDisc = sqrt disc
        denom = 2*a
   --Función para calcular el valor de e (2.71828182845905)
   euler :: Double -> Double
   euler 0.0 = 1.0
   euler n   = 1.0 / product [1..n] + euler (n - 1.0)

[editar] Enlaces externos

Inglés:

Español:

Implementaciones:

  • Hugs Haskell User's Gofer System
  • GHC The Glasgow Haskell Compiler

Otros enlaces:

[editar] Bibliografía

Ruiz, Blas; Gutiérrez, Francisco; Guerrero, Pablo; y Gallardo, José. Razonando con Haskell. Un curso sobre programación funcional. Thomson.

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com