PureScript: Lenguaje de Programación Funcional Fuertemente Tipado

Puntos Clave
  • PureScript es un lenguaje puramente funcional que se transpila principalmente a JavaScript.
  • Fue creado por Phil Freeman en 2013 para superar las limitaciones de otras herramientas de transpilación de Haskell.
  • Implementa una estrategia de evaluación estricta, a diferencia de la evaluación perezosa de Haskell.

PureScript es un lenguaje de programación fuertemente tipado y puramente funcional que se transpiló originalmente a JavaScript, aunque actualmente cuenta con backends alternativos para C++11, Erlang y Go. Gracias a su diseño, permite el desarrollo de aplicaciones web, aplicaciones de servidor y aplicaciones de escritorio (utilizando Electron o compiladores de C++11 y Go con las librerías adecuadas).

Historia y Origen

PureScript fue diseñado inicialmente por Phil Freeman en 2013. El proyecto surgió de la insatisfacción de Freeman con los intentos previos de transpilar Haskell a JavaScript, como Fay, Haste o GHCJS. Desde entonces, el lenguaje ha sido adoptado por la comunidad y su desarrollo se centraliza en GitHub.

Para apoyar el ecosistema, la comunidad ha desarrollado herramientas esenciales como:

  • Pulp: Una herramienta de construcción dedicada.
  • Pursuit: Un directorio de documentación.
  • Spago: El gestor de paquetes oficial.

Características Principales

PureScript se distingue por su implementación de la evaluación estricta, estructuras de datos persistentes e inferencia de tipos. Su sistema de tipos comparte similitudes con lenguajes como Haskell, incluyendo:

  • Tipos de datos algebraicos y coincidencia de patrones (pattern matching).
  • Tipos de orden superior (higher kinded types).
  • Clases de tipos y dependencias funcionales.
  • Polimorfismo de rango superior.

Innovaciones en el Sistema de Tipos

A diferencia de Haskell, PureScript introduce el polimorfismo de filas y los registros extensibles. Sin embargo, no soporta algunas características avanzadas de Haskell, como los tipos de datos algebraicos generalizados (GADT) o las familias de tipos.

Interoperabilidad y Desarrollo

Los transpiladores de PureScript buscan generar código legible siempre que sea posible. A través de una interfaz de funciones foráneas (FFI), el lenguaje permite reutilizar código existente en JavaScript, C++11 y Go.

Además, PureScript soporta la compilación incremental y ofrece plug-ins para editores populares como Vim, Emacs, Sublime Text, Atom y Visual Studio Code. Una de sus funciones más destacadas es el desarrollo guiado por tipos mediante agujeros tipados (typed holes), que permite construir programas con subexpresiones faltantes que el transpilador infiere y reporta al usuario.

Preguntas Frecuentes

Respuestas a las dudas más habituales sobre PureScript: Lenguaje de Programación Funcional Fuertemente Tipado.

Aunque su sintaxis es similar, PureScript utiliza una estrategia de evaluación estricta por defecto y soporta polimorfismo de filas y registros extensibles, mientras que Haskell es perezoso.

Volver al índice enciclopédico