Programación dirigida por datos en Haskell, al estilo SICP

Fuentes: Data-directed programming in Haskell (SICP 2.4.3)

Este artículo del blog Entropic Thoughts recorre la sección 2.4.3 de Structure and Interpretation of Computer Programs (SICP), de Abelson y Sussman, y traslada su ejemplo de programación dirigida por datos al lenguaje Haskell. La idea central es representar números complejos de dos formas —rectangular (parte real e imaginaria) y polar (magnitud y ángulo)— y permitir consultar cuatro magnitudes: parte real, parte imaginaria, magnitud y ángulo.

El autor parte de una versión con datos etiquetados y funciones de instalación que mutan una tabla implícita de operaciones, replicando los procedimientos get y put del libro original. A continuación, refactoriza ese diseño para hacer la tabla explícita, pasándola como argumento a las funciones genéricas, lo que elimina el estado y deja el código completamente puro.

El artículo muestra cómo esa tabla explícita no es, en el fondo, más que un manual disfrazado de type class de Haskell. Presenta entonces la definición formal de la clase Complex, junto con los tipos Rectangular y Polar y sus respectivas instancias, culminando una transición natural desde las tablas manuales de SICP hacia las abstracciones idiomáticas del lenguaje. Es un texto divulgativo para programadores interesados en Haskell, en patrones de diseño y en la lectura moderna de SICP.