Tipo dependiente

En ciencias informáticas y lógica, un tipo dependiente es un tipo que depende de un valor. Los tipos dependientes desempeñan un papel central en la teoría del tipo de intuitionistic y en el diseño de lenguajes de programación funcionales como ATS, Agda y Epigram.

Un ejemplo es el tipo de n-tuples de números reales. Esto es un tipo dependiente porque el tipo depende del valor n.

La decisión de la igualdad de tipos dependientes en un programa puede requerir cálculos. Si los valores arbitrarios se permiten en tipos dependientes, entonces la decisión de la igualdad del tipo puede implicar decidir si dos programas arbitrarios producen el mismo resultado; de ahí escriba a máquina la comprobación se puede hacer undecidable.

La correspondencia del Curry-Howard implica que los tipos se pueden construir que expreso propiedades matemáticas arbitrariamente complejas. Si el usuario puede suministrar una prueba constructiva que un tipo se habita (es decir, que un valor de ese tipo existe) entonces un compilador puede comprobar la prueba y convertirla en el código de máquina ejecutable que calcula el valor realizando la construcción. El rasgo de comprobación de la prueba hace lenguas dependientemente escritas a máquina estrechamente relacionadas a ayudantes de la prueba. El aspecto de generación del código proporciona un enfoque potente a verificación del programa formal y código que lleva la prueba, ya que el código se saca directamente de una prueba matemática mecánicamente verificada.

Sistemas del cubo de la lambda

Henk Barendregt desarrolló el cubo de la lambda como un medio de clasificar sistemas del tipo a lo largo de tres hachas. Las ocho esquinas del diagrama en forma de cubo que resulta cada uno equivale a un sistema del tipo, con cálculo de la lambda simplemente escrito a máquina en la esquina menos expresiva y cálculo de construcciones en el más expresivo. Las tres hachas del cubo equivalen a tres aumentos diferentes del cálculo de la lambda simplemente escrito a máquina: la adición de tipos dependientes, la adición del polimorfismo y la adición de más alto kinded escriben a máquina a constructores (funciones de tipos a tipos, por ejemplo). El cubo de la lambda es generalizado adelante por sistemas del tipo puros.

Primero pida la teoría del tipo dependiente

El sistema de primeros tipos del dependiente de pedido puros, correspondiente al marco lógico LF, se obtiene generalizando el tipo del espacio de función del cálculo de la lambda simplemente escrito a máquina al tipo del producto dependiente.

La escritura para-tuples de números reales, como encima, significa el tipo de funciones que dado un número natural el n devuelve un tuple de números reales de la talla n. El espacio de función habitual se levanta como un caso especial cuando el tipo de la variedad realmente no depende de la entrada, p.ej es el tipo de funciones de números naturales a los números reales, escritos como en el cálculo de la lambda simplemente escrito a máquina.

El segundo dependiente de pedido escribe a máquina la teoría

El sistema de segundos tipos del dependiente de pedido se obtiene de permitiendo el requisito sobre constructores del tipo. En esta teoría el operador del producto dependiente subsume tanto al operador del cálculo de la lambda simplemente escrito a máquina como la carpeta de Sistema F.

El pedido más alto dependientemente escribió a máquina el cálculo de la lambda polimorfo

El sistema de pedido más alto se extiende a cuatro formas de la abstracción del cubo de la lambda: funciones de términos a términos, tipos a tipos, términos a tipos y tipos a términos. El sistema equivale al Cálculo de construcciones cuyo derivado, el cálculo de construcciones inductivas es el sistema subyacente del ayudante de la prueba de Coq.

Programación orientada al objeto

Un poco de investigación reciente se ha dirigido a la combinación de la teoría del tipo dependiente con la programación orientada al objeto.

Comparación

Véase también

Notas a pie de página

Adelante lectura

Externo



Buscar