Articulo de referencia

miniKanren

miniKanren es una familia de lenguajes de programación para programación relacional , desarrollada inicialmente por Will Byrd. [ 1 ] Dado que las relaciones son bidireccionales ...

miniKanren es una familia de lenguajes de programación para programación relacional , desarrollada inicialmente por Will Byrd. [ 1 ] Dado que las relaciones son bidireccionales , si se le proporciona a miniKanren una expresión y una salida deseada, miniKanren puede ejecutar la expresión "hacia atrás", encontrando todas las entradas posibles que producen la salida deseada. Este comportamiento bidireccional permite al usuario restringir simultáneamente tanto la entrada como el resultado del programa. miniKanren realiza una búsqueda intercalada que eventualmente encontrará cualquier solución existente, incluso si alguna rama del árbol de búsqueda es infinitamente larga y no contiene soluciones. Si no existe ninguna solución, miniKanren puede buscar indefinidamente si el árbol de búsqueda es infinito.

Un ejemplo de código miniKanren es evalo, un objetivo relacional que relaciona expresiones con los valores a los que se evalúan. Cuando evalose llama en miniKanren de la siguiente manera: (evalo q q), generará quines , es decir, expresiones qque al ejecutarse se evaluarán a sí mismas. [ 2 ]

El libro The Reasoned Schemer utiliza miniKanren para demostrar la programación relacional y proporciona una implementación completa en Scheme . [ 3 ] El núcleo del lenguaje cabe en dos páginas impresas. La implementación de miniKanren en Scheme está diseñada para que sea fácil de entender, modificar y extender.

microKanren es otro lenguaje de la familia miniKanren, notable por su implementación minimalista en menos de 40 líneas de Scheme. [ 4 ]

αleanTAP es un programa escrito en αKanren, una extensión de miniKanren para lógica nominal . Dado un teorema, puede encontrar una demostración, convirtiéndose así en un demostrador de teoremas . Dada una demostración, puede encontrar el teorema, convirtiéndose así en un verificador de teoremas. Dada parte de una demostración y parte de un teorema, completará las partes faltantes de la demostración y del teorema, convirtiéndose así en un explorador de teoremas. [ 1 ]

Existen implementaciones de miniKanren en Clojure , Dart , Haskell , JavaScript , Python , Racket , Ruby , Scala y Swift . La implementación canónica es un lenguaje integrado en Scheme . La biblioteca core.logic de Clojure se inspiró en miniKanren.

El nombre kanren proviene de una palabra japonesa (関連) que significa "relación".

Véase también

Referencias

  1. 1 2 Will Byrd (agosto de 2009). Programación relacional en miniKanren: técnicas, aplicaciones e implementaciones (PDF) (Ph.D.). Universidad de Indiana .
  2. Will Byrd, Eric Holk y Dan Friedman (2012). "miniKanren, en vivo y sin etiquetar: generación de Quine mediante intérpretes relacionales (perla de programación)" (PDF) . Actas del Taller Anual de 2012 sobre Scheme y Programación Funcional . ACM : 8–29 .{{cite journal}}: CS1 maint: varios nombres: lista de autores ( enlace )
  3. Dan Friedman; Will Byrd; Oleg Kiselyov (2005). El estratega razonado . MIT Press . ISBN 9780262562140.
  4. Hemann, Jason; Friedman, Daniel (13 de noviembre de 2013). microkanren: Un núcleo funcional mínimo para la programación relacional . Taller sobre Scheme y programación funcional. Alexandria, Estados Unidos . Consultado el 17 de mayo de 2026 .
  • Sitio web oficial