¿Qué extensiones Haskell (GHC) deben usar/evitar los usuarios?


He tenido la experiencia unas cuantas veces de que GHC me diga que use una extensión, solo para descubrir que al usar esa extensión he hecho que el código sea mucho más complejo cuando un simple refactor me hubiera permitido seguir con Haskell 98 (ahora 2010) y tener una solución más sencilla.

Por otro lado, también hay momentos en que los tipos de GADT o Rank2Types (rara vez RankNTypes) hacen mucho menos trabajo y código mucho más limpio.

Qué extensiones tienden generalmente para ocultar la posibilidad de un mejor diseño, y que en general mejorarlo? Si hay algunos que hacen ambas cosas, ¿qué debe buscar un usuario (asegúrese de que sea cierto o no cierto de la solución que pretende) antes de decidir usar esa extensión?

(Véase también ¿Debo usar extensiones GHC Haskell o no?)

Author: Community, 2012-06-01

1 answers

Una lista ad hoc de extensiones moralmente "buenas" y moralmente "malas" - ¡este es un juicio estético!

El Bien

  • GADTs
  • Listas paralelas de comprensiones
  • Protectores de patrón
  • Comprensión de la mónada
  • Secciones de tupla
  • Registrar comodines
  • Vacío de datos decls
  • Tipos existenciales
  • Nuevo tipo generalizado derivado
  • MPTC + FDs
  • Familias de tipos
  • Explícito cuantificación
  • Polimorfismo de rango superior
  • tyvars con alcance léxico
  • Patrones de explosión

El Malo

  • Comprensiones SQL
  • Parámetros implícitos

Lo feo (pero necesario)

  • Plantilla Haskell
  • Tipos y tuplas sin caja
  • Instancias indecidibles, superpuestas e incoherentes usually generalmente significa que tiene un diseño incorrecto.

No estoy seguro

  • Flecha notación
  • Ver patrones
 52
Author: Don Stewart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-01 15:59:33