Mercury (lenguaje)

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

[1]​ 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.

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.

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 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.

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.