La epigrama es el nombre de un lenguaje el de programación funcional con los tipos del dependiente y IDE embalado generalmente con ella. El tipo sistema de la epigrama es bastante fuerte expresar las especificaciones de programa que la meta es apoyar una transición lisa de la programación ordinaria a los programas y a las pruebas integrados cuya corrección se puede comprobar y certificar por el recopilador . La epigrama explota los asuntos como tipos principio, y se basa en el tipo intuicionista teoría .

El prototipo de la epigrama fue ejecutado por Conor McBride basado en trabajo común con James McKinna. Su desarrollo es continuado por el grupo de la epigrama en el Nottingham, el Durham, St Andrews y el Holloway real en el Reino Unido . La puesta en práctica experimental actual del sistema de la epigrama está libremente disponible del homepage de la epigrama junto con un manual del usuario, una clase particular y un poco de material de base. El sistema se ha utilizado debajo del linux, Windows y del mac OS x .

Sintaxis

La epigrama utiliza un sintaxis de dos dimensiones, con una versión del látex y una versión del ASCII. Aquí están algunos ejemplos '' de la clase particular de la epigrama '':

Ejemplos

Los números naturales

\ raya \ mathrm {} \; de los datos \ ido (\ frac {} {\ mathsf {nacional}: \ estrella} \) derecho \; \ raya \ mathrm {donde} \; \ ido (\ frac {} {\ mathsf {cero}: \ mathsf {nacional}} \) derecho \; ; \; \ se fue (\ frac {n: \ mathsf {nacional}} {\ mathsf {} \ n del suc: \ mathsf {nacional}} \) derecho

… Y en el ASCII: ¡

 (!  ¡(! (n: ¡Nacional! ¡datos! ---------¡! ¡donde! ----------¡! ; ¡! -----------¡! ¡! Nacional: ¡*)! cero: ¡Nacional)! suc n: ) 
nacional

Repetición en productos naturales

\ mathsf {NatInd}: \ comenzar {la matriz} \ forall P: \ mathsf {nacional} \ rightarrow \ estrella \ \ \ del mathsf {cero} del Rightarrow P \ del rightarrow \ \ (\ forall n: \ mathsf {nacional} \ Rightarrow P \ n \ rightarrow P \ (\ mathsf {} del suc \ n)) \ del rightarrow \ \ \ forall n: \ mathsf {nacional} \ Rightarrow P \ n \ extremo {matriz}

\ mathsf {} \ P \ MZ \ ms \ cero \ de NatInd mz equivalente

\ mathsf {NatInd} \ P \ MZ \ ms \ (\ mathsf {} \ n) \ ms equivalente \ n del suc \ (NatInd \ P \ MZ \ ms \ n)

… Y en el ASCII:

NatInd: todo el P: - > * => nacional P cero - >  (toda la n: => nacional P n - > P (suc n)) - >  toda la n: => nacional P n => cero MZ del ms de NatInd P MZ Ms de NatInd P MZ (ms n (ms n)
del => del suc n) de NatInd P MZ

Adición

El dependiente mecanografía adentro la epigrama

La epigrama es esencialmente un cálculo mecanografiado de la lambda con el tipo de datos algebraico generalizado extensiones de, a excepción de dos extensiones. Primero, los tipos son entidades de primera clase, del tipo \ star; los tipos son expresiones arbitrarias del tipo \ star, y el tipo equivalencia se define en términos de formas normales de los tipos. En segundo lugar, tiene un tipo dependiente de la función; en vez del P \ del rightarrow Q, \ forall x: P \ Rightarrow Q, donde x está limitado en Q al valor que la discusión de la función (del tipo P) toma eventual.

Los tipos dependientes completos, según lo ejecutado en epigrama, son una abstracción de gran alcance. (Desemejante en de el ml dependiente, los valores dependió sobre puede ser de cualquier tipo válido.) Una muestra de las nuevas capacidades de la especificación formal que los tipos dependientes traen se puede encontrar en '' la clase particular de la epigrama ''.

Se planea que la versión próxima de la epigrama, epigrama 2, será basada en el tipo de observación teoría (nota: el acoplamiento está a un proyecto incompleto), una novedad del tipo constructivo teoría .

Ver también

EPSRC en ALF, lego y relacionado
Alf, el lenguaje el de programación funcional algebraico de la lógica

.

  • Zenithic
  • Angelos Sikelianos
    Random links:Pieter Burman la anciano | Lista de muertes de la prisión | Tara Fitzgerald | Eve Ensler | Autopista de Ayer Rajah

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">