Articulo de referencia

Escher (lenguaje de programación)

Escher (llamado así por M. C. Escher , "maestro de los bucles infinitos") es un lenguaje de programación declarativo que admite modelos de programación funcional y lógica , desa...

Escher (llamado así por M. C. Escher , "maestro de los bucles infinitos") es un lenguaje de programación declarativo que admite modelos de programación funcional y lógica , desarrollado por J. W. Lloyd a mediados de la década de 1990. Fue diseñado principalmente como una herramienta de investigación y enseñanza. La visión básica de la programación que exhiben Escher y lenguajes relacionados es que un programa es una representación de una teoría en algún marco lógico , y la ejecución del programa (computación) es una deducción de la teoría. El marco lógico para Escher es la teoría simple de tipos de Alonzo Church .

Escher, en particular, admite la entrada/salida mediante un tipo monádico que representa el "mundo exterior", al estilo de Haskell . Uno de los objetivos de los diseñadores de Escher era admitir la metaprogramación , por lo que el lenguaje cuenta con un soporte integral para generar y transformar programas.

Ejemplos

MÓDULO Lambda. CONSTRUIR Persona/0. FUNCIÓN Jane, Mary, John: Uno -> Persona. FUNCIÓN Madre : Persona * Persona -> Booleano. Madre(x,y) => x=Jane e y=María. FUNCIÓN Esposa : Persona * Persona -> Booleano. Esposa(x,y) => x=Juan y y=Jana. FUNCIÓN PrimitiveRel : (Persona * Persona -> Booleano) -> Booleano. PrimitiveRel(r) => r=Madre \/ r=Esposa. FUNCIÓN Rel : (Persona * Persona -> Booleano) -> Booleano. Rel(r) => PrimitiveRel(r) \/ (ALGUNOS [r1,r2] (r = LAMBDA [u] (ALGUNOS [z] (r1(Fst(u),z) & r2(z,Snd(u)))) & PrimitiveRel(r1) y PrimitiveRel(r2))). 

Referencias

  • Programación declarativa en Escher , JW Lloyd, Universidad de Bristol, Bristol, Reino Unido, 1995
  • Una implementación de Escher (Se puede acceder a algunos enlaces rotos desde la página archivada (o sustituyendo el nuevo dominio en el enlace en cuestión)).