Ir al contenido principal

Mercury: un lenguaje de programación lógico-funcional

Mercury es un lenguaje de programación lógico-funcional diseñado para aplicaciones de alta confiabilidad. Combina la expresividad de Prolog con un sistema de tipos estático, análisis de modos e inferencia de determinismo.

Desarrollado en la Universidad de Melbourne (Australia) por Zoltan Somogyi, Thomas Conway y Fergus Henderson a mediados de los años 90.

A diferencia de Prolog, Mercury está compilado y produce código de máquina eficiente.

Su paradigma es lógico, funcional y declarativo.

¿Para qué sirve?

Es ideal para:

  • Para programas que requieren razonamiento lógico complejo, como sistemas expertos, análisis simbólico, verificación formal y compiladores. 
  • En investigación académica y en proyectos donde la corrección y optimización son críticas.

Su compilador genera código eficiente en C o directamente en LLVM, permitiendo alto rendimiento.

Relación con Prolog

  • Mercury hereda la semántica lógica de Prolog (basada en resolución y unificación). 
  • Usa predicados y cláusulas como Prolog, pero con tipado estático, determinismo explícito y análisis de modos. 
  • Se puede considerar una evolución de Prolog, orientada a la seguridad y optimización.

Comparativa entre Mercury y Prolog

Comparativa entre Mercury y Prolog

Aspecto Prolog Mercury
Paradigma Lógico puro Lógico‑funcional con tipado estático
Tipado Dinámico Estático y fuerte
Determinismo Implícito Explícito (debe declararse)
Eficiencia Interpretado o compilado con menor optimización Compilado a C/LLVM con optimizaciones avanzadas
Errores en tiempo de ejecución Más frecuentes por falta de tipos Detectados en compilación
Sintaxis Más simple y flexible Más estricta y formal
Inferencia de tipos No disponible Automática y segura
Uso principal Prototipado rápido, IA simbólica Aplicaciones lógicas grandes y seguras
Origen Década de 1970 (Colmerauer, Kowalski) Década de 1990 (Somogyi, Conway, Henderson)

Instalando Mercury

Para descargarlo debemos ir a este sitio: https://www.mercurylang.org/download.html

En caso de no querer instalarlo, puedes probarlo desde este sitio: https://glot.io/new/mercury

Programando en Mercury

Miremos algunos ejemplos.

Ejemplo 1. El clásico "Hola, mundo" en Prolog y Mercury.

En Prolog:

holamundo.pl

% holamundo.pl
main :-
    write('Hola, mundo'), nl.

En Mercury:

holamundo.m

% holamundo.m
:- module holamundo.
:- interface.
:- import_module io.

:- pred main(io::di, io::uo) is det.

:- implementation.

main(!IO) :-
    io.write_string("Hola, mundo\n", !IO).

Compilación y ejecución:

$ mmc holamundo.m
$ ./holamundo.exe

Salida:

Hola, mundo

¡Hemos creado nuestro primer programa en Mercury!

Continuaremos en próximas entregas.

Enlaces:

https://blog.adrianistan.eu/mercury-prolog-haskell-bebe/
https://guedemann.org/articles/mercury-intro-curry-club.html
https://en.wikipedia.org/wiki/Mercury_(programming_language)
https://www.mercurylang.org/
https://ferestrepoca.github.io/paradigmas-de-programacion/proglogica/tutoriales/mercury_2026-1/index.html

Comentarios

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...