lang_narrow: un lenguaje con tipado por flujo y tipos union

Fuentes: lang_narrow: A Language With Flow Typing and Union Types

lang_narrow es un lenguaje de programación experimental diseñado para demostrar la viabilidad del tipado por flujo (flow typing) mediante tipos union estructurales. A diferencia de los tipos algebraicos de datos (ADT) cerrados, este sistema permite restringir dinámicamente los tipos de los valores en las ramas del flujo de control, eliminando variantes no aplicables sin intervención manual del programador. El autor, Ayaz Hafiz, presenta una formalización del sistema de tipos que incluye tipos primitivos como nat, string, bool y unknown, así como reglas de derivación para funciones y tipos. Aunque el lenguaje no soporta funciones de orden superior ni tipos recursivos por simplicidad, su arquitectura se basa en la subsumción estructural, lo que facilita la inclusión y exclusión de variantes. El texto detalla las limitaciones técnicas, como la necesidad de etiquetas de tiempo de ejecución para las expresiones de restricción, y compara este enfoque con los ADT de Haskell, Rust y OCaml. El código fuente completo y un entorno de prueba interactivo están disponibles en GitHub, permitiendo a los desarrolladores explorar las implicaciones de un sistema de tipos más flexible y estructuralmente orientado.