lunes, 21 de marzo de 2016

Programación lógica con miniKanren

Siempre pero siempre pero siempre que escuchamos sobre programación lógica, relacionamos con prolog y hacemos bien. Pero prolog no es la única opción.

Con ustedes miniKanren.

miniKanren es un DSL (Domain Specific Language) para la programación logica.

miniKanren es muy simple, con sólo tres operadores lógicos y un operador de interfaz.
La primera implementación fue en scheme, pero ahora existen implementaciones en diferentes lenguajes y tecnologías como Racket, Clojure, Haskell, Python, JavaScript, Scala, Ruby, OCaml, PHP y algunos más.

miniKanren fue diseñado para ser simple y fácil pero a la vez fácil de extender.

Veamos un ejemplo:

(run* [q] (== q 1))

Esto parece una linea de codigo pero hace muchas cosas.

run* retorna la lista de comandos que se pueden ejecutar. q es una variable booleana.

Como podemos ver miniKanren es simple y open source!

Dejo link: http://minikanren.org/