Tabla de enlaces
-
Introducción
-
Traduciendo al cálculo secuente
2.1 Expresiones aritméticas
2.2 Leting Bindings
2.3 Definiciones de nivel superior
2.4 Datos algebraicos y tipos de Codata
2.5 Funciones de primera clase
2.6 Operadores de management
-
Evaluación dentro de un contexto
3.1 Contextos de evaluación para la diversión
3.2 Centrarse en la evaluación en el núcleo
-
Reglas de escritura
4.1 Reglas de escritura para la diversión
4.2 Reglas de escritura para el núcleo
4.3 Tipo de solidez
-
Perspectivas
5.1 Los contextos de evaluación son de primera clase
5.2 Los datos son duales a Codata
5.3 Los vínculos de alquiler son duales para los operadores de management
5.4 La transformación del caso del caso
5.5 consumidores directos e indirectos
5.6 Llamado por valor, llamado por nombre y eta-laws
5.7 Lógica lineal y la dualidad de las excepciones
-
Trabajo relacionado
-
Conclusión, declaración de disponibilidad de datos y reconocimientos
A. La relación con el cálculo secuente
B. Reglas de escritura para la diversión
C. Semántica operativa de la etiqueta/goto
Referencias
4 reglas de escritura
En esta sección, presentamos las reglas de tipificación para la diversión en la Sección 4.1 y para el núcleo en la Sección 4.2. En la Sección 4.3 declaramos la solidez del tipo para ambos idiomas y demostramos que la traducción de diversión a núcleo conserva la tipilidad de los programas. Utilizamos los mismos constructores, destructores, tipos y contextos de tipificación para diversión y núcleo, que se resumen en la definición 4.1. Tenga en cuenta que distinguimos entre las variables de productor y el consumidor en los contextos de tipificación, que indicamos con las anotaciones PRD y SNC.
Especializamos las reglas para los tipos de datos al par y la lista de tipos concretos, y las reglas para los tipos de Codata a LPAIR, transmitir y funciones 𝜎 → 𝜏. Un lenguaje de programación realista utilizaría declaraciones de tipo introducidas por el programador para Typecheck Knowledge y los tipos de Codata en lugar de usar estos casos especiales. Pero la formalización de dicho mecanismo common para especificar datos y tipos de Codata hace que las reglas de escritura sean menos legibles. Este tipo de mecanismo para especificar datos algebraicos y tipos de Codata en idiomas basados en el cálculo secuencial se puede encontrar en [Downen et al. 2015] o [Downen and Ariola 2020, section 8]. En todas las reglas de tipificación a continuación, suponemos que tenemos un entorno de programa que contiene declaraciones de tipo para todas las definiciones contenidas en el programa, pero no enhebren explícitamente este entorno del programa a través de cada una de las reglas de tipificación.
4.1 Reglas de escritura para la diversión
No discutimos las reglas de escritura para la diversión en detalle, ya que en su mayoría son estándar. En cambio, proporcionamos las reglas completas en el Apéndice B. La diversión del lenguaje solo tiene una categoría sintáctica, términos, por lo que solo necesitamos un juicio de tipificación γ ⊢ 𝑡: 𝜏. Este juicio de tipificación cube que en el contexto γ (que contiene asignaciones de tipo para variables y covariables) el término 𝑡 tiene tipo 𝜏. Las únicas dos reglas interesantes se refieren a la etiqueta de los operadores de management y GOTO:
En la regla GOTO requerimos que la covariable 𝛼 esté en el contexto con el tipo 𝜏, y que el término 𝑡 se puede escribir con el mismo tipo. El término goto (𝑡; 𝛼) en sí se puede usar en cualquier tipo 𝜏 ′ porque no vuelve a su contexto inmediatamente circundante.
Autores:
(1) David Binder, Universidad de Tübingen, Alemania;
(2) Marco Tzschentke, Universidad de Tübingen, Alemania;
(3) Marius Muller, Universidad de Tübingen, Alemania;
(4) Klaus Ostermann, Universidad de Tübingen, Alemania.