Lenguaje de Programación para Matemática | Haskell

¿Qué es Haskell?

Haskell es un lenguaje de programación estandarizado multi-propósito puramente funcional con semánticas no estrictas y fuerte tipificación estática. Su nombre se debe al lógico estadounidense Haskell Curry. En Haskell, “una función es un ciudadano de primera clase” del lenguaje de programación. Como lenguaje de programación funcional, el constructor de controles primario es la función. El lenguaje tiene sus orígenes en las observaciones de Haskell Curry y sus descendientes intelectuales.

Programación funcional

La programación funcional es un paradigma de programación declarativa basado en el uso de funciones matemáticas.

Características de Haskell

Lenguaje funcional de orden superior fuertemente tipificado.

  • Clasifica los entes de un programa en:
    • objetos (constantes y funciones) y
    • tipos: cada objeto debe tener un tipo.
  • Dispone de objetos y tipos predefinidos.
  • Permite diversas declaraciones de objetos (monomorfos y polimorfos):
    • funciones constructoras y
    • funciones definidas.
  • Permite diversas declaraciones de tipos (monomorfos y polimorfos):
    • tipos sinónimos y
    • tipos algebraicos„
  • Aplica:
    • un sistema de inferencia de tipos basado en el sistema de Hindley-Milner,
    • una estrategia de reducción perezosa

Principios de Haskell

  • Completitud sintáctica: Si en una expresión sintácticamente correcta se cambia una subexpresión por otra expresión correcta del mismo nivel (y tipo) la expresión resultante es igualmente correcta.
  • Completitud semántica: A todos los entes de cada nivel se les puede dar el mismo tratamiento:
    • pueden recibir nombre, y
    • pueden figurar en expresiones.
  • Estos principios dan lugar a una sintaxis sin “casos especiales” de la que se deriva la posibilidad de utilizar:
    • funciones de orden superior
    • y funciones currificadas

Fuentes:

https://es.wikipedia.org/wiki/Haskell

http://www.lcc.uma.es/~jmmb/declarativa/ApuntesPF2004/ProgFunII.pdf

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *