Mercury es un lenguaje de programación lógico-funcional, es decir, integra "soluciones puras" y computación con información parcial. [1]

Historia

editar

Es un lenguaje lógico funcional que está basado en la programación declarativa pura, un lenguaje de propósito general que fue diseñado para resolver aplicaciones del «mundo real» de forma robusta; fue desarrollado por Fergus Henderson, Thomas Conway y Zoltan Somogyi en la universidad de Melbourne el 8 de abril de 1995; la sintaxis es parecida a la de Prolog y soporta polimorfismo.

Tipificación de datos

editar

Usa un sistema estático de chequeo de tipos similar al de Haskell, pero también soporta tipificación dinámica ya que dispone del tipo universal (UNIV), está definido en la librería estándar en el módulo std_util, con la ayuda de estos predicados type_to_univ/2 y univ_to_type/2 se puede convertir un tipo en universal y viceversa, este tipo universal es usado en situaciones en las que se necesita colecciones heterogéneas.

Determinismo

editar

El determinismo en Mercury se define mediante categorías usando estos predicados:

Categorías Número de Soluciones det 1 semidet <=1 multi >=1 nondet >=0 failure 0

Ventajas

editar

Es un lenguaje que, comparado con Prolog, es más puramente declarativo puesto que carece de declaraciones «extra-lógicas» como «poda» y E/S imperativa. Permite una optimización mejor del programa. Gracias a estas optimizaciones debidas a la pureza del programa, un programa escrito en Mercury es más rápido que uno equivalente realizado en Prolog.

Proyectos

editar

HAL Project: es un lenguaje lógico funcional con restricciones realizado por la Universidad de Melbourne y de la Universidad de Monash.

Aditi Project : Es un lenguaje lógico para las bases de datos realizado por la Universidad de Melbourne.


Referencias

editar
  1. Zoltan Somogyi, Fergus Henderson and Thomas Conway.The execution algorithm of Mercury: an efficient purely declarative logic programming language. Journal of Logic Programming, volumen 29, Nº 1-3, octubre-diciembre de 1996, Páginas 17-64. (en inglés)

📚 Artikel Terkait di Wikipedia

Paradigma de programación

Frans Coenen (11 de octubre de 1999). «Characteristics of declarative programming languages». cgi.csc.liv.ac.uk. Consultado el 20 de febrero de 2014. 

Lenguaje de programación

«Functional Programming HOWTO — Python 3.5.3rc1 documentation». docs.python.org. Consultado el 13 de enero de 2017.  «Overview - D Programming Language». dlang

ABSET

programación declarativo. Este joven lenguaje de programación ha sido desarrollado por la Universidad de Aberdeen. ABSYS "ABSET: A Programming Language Based

ABSYS

sistemática del lenguaje de programación Prolog. ABSET "ABSET: A Programming Language Based on Sets", E.W. Elcock et al., Mach Intell 4, Edinburgh U Press

Philip Wadler

Guzmán, M. A. M.; Hammond, K.; Hughes, J. (1992). «Report on the programming language Haskell». ACM SIGPLAN Notices 27 (5): 1. doi:10.1145/130697.130699

Programa informático

Comparative Programming Languages, Second Edition (en inglés). Addison-Wesley. pp. 75. ISBN 0-201-56885-3.  Wilson, Leslie B. (1993). Comparative Programming Languages

GNU Guile

(13 de enero de 2003). «SXSLT: Manipulation Language for XML». Practical Aspects of Declarative Languages. Lecture Notes in Computer Science (en inglés)

Lenguaje Factor

Sviatoslav; Ehrenberg, Daniel (2010). "Factor: a dynamic stack-based programming language". SIGPLAN Not. ACM. 45 (12): 43–58. Pestov, Slava. «Factor documentation: