Escritura sensible al flujo


En la teoría del lenguaje de programación , la escritura sensible al flujo (también llamada escritura de flujo o escritura de ocurrencia ) es un sistema de tipos donde el tipo de una expresión depende de su posición en el flujo de control .

En los lenguajes de tipado estático , un tipo de expresión está determinado por los tipos de subexpresiones que la componen. Sin embargo, en la escritura sensible al flujo, el tipo de una expresión puede actualizarse a un tipo más específico si sigue una operación que valida su tipo. Las operaciones de validación pueden incluir predicados de tipo, actualizaciones imperativas y flujo de control.

Esta técnica, junto con la inferencia de tipos, reduce la necesidad de escribir anotaciones de tipos para todas las variables o de realizar conversiones de tipos , como se ve con los lenguajes dinámicos que utilizan el tipo pato . Reduce la verbosidad y compensa el código terser, más fácil de leer y modificar.

También puede ayudar a los implementadores de lenguajes a proporcionar implementaciones que ejecuten lenguajes dinámicos más rápidamente al predecir el tipo de objetos de forma estática. [1]

Finalmente, aumenta la seguridad de los tipos y puede prevenir problemas debido a punteros nulos [ ¿cómo? ] , etiquetado por CAR Hoare —el inventor de referencia nula— como "el error de los mil millones de dólares" [2]

Typed Scheme, un sistema de tipos para Scheme , fue el primer sistema de tipos con esta característica. [3] Su sucesor, Typed Racket (un dialecto de Racket ), todavía hace un uso extensivo de la tipificación de ocurrencias. [4] Poco después de Typed Scheme, David J. Pearce reinventó de forma independiente la tipificación de flujo en Whiley . [5] [6]