Articulo de referencia

Distinción de fases

La distinción de fases es una propiedad de los lenguajes de programación que observan una división estricta entre tipos y términos . Luca Cardelli propuso una regla concisa para...

La distinción de fases es una propiedad de los lenguajes de programación que observan una división estricta entre tipos y términos . Luca Cardelli propuso una regla concisa para determinar si la distinción de fases se conserva en un lenguaje o no : si A es un término de tiempo de compilación y B es un subtérmino de A, entonces B también debe ser un término de tiempo de compilación. [ 1 ]

La mayoría de los lenguajes de tipado estático se ajustan al principio de distinción de fases. Sin embargo, algunos lenguajes con sistemas de tipos especialmente flexibles y expresivos (en particular, los lenguajes de programación con tipado dependiente ) permiten manipular los tipos del mismo modo que los términos regulares. Estos pueden pasarse a funciones o devolverse como resultados.

Un lenguaje con distinción de fases puede tener espacios de nombres separados para tipos y variables de tiempo de ejecución. En un compilador optimizador , la distinción de fases marca el límite entre las expresiones que se pueden borrar de forma segura .

Teoría

La distinción de fases se utiliza junto con la verificación estática. [ 2 ] Al utilizar un sistema basado en cálculo, la distinción de fases elimina la necesidad de imponer una lógica lineal entre diferentes tipos y términos de programación. [ 3 ]

Introducción

La distinción de fases diferencia entre el procesamiento que se realiza en tiempo de compilación y el procesamiento que se realiza en tiempo de ejecución.

Consideremos un lenguaje simple, [ 3 ] con términos:

 t ::= verdadero | falso | x | λx : T . t | tt | si t entonces t sino t

y tipos:

 T ::= Booleano | T -> T

Nótese la diferencia entre tipos y términos. En tiempo de compilación , los tipos se utilizan para verificar la validez de los términos. Sin embargo, en tiempo de ejecución, los tipos no desempeñan ningún papel.

Referencias

  1. Cardelli, Luca (3 de enero de 1988). "Distinciones de fase en la teoría de tipos" (PDF) . Digital Equipment Corporation .
  2. Cardelli, Luca (3 de enero de 1988). "Distinciones de fase en la teoría de tipos" (PDF) . Digital Equipment Corporation .
  3. 1 2 "CMSC 336: Sistemas de tipos para lenguajes de programación; Lección 7: Isomorfismo de Curry-Howard y formas derivadas" (PDF) . 31 de enero de 2008.