mini-kanren ¿cuál es la diferencia entre una cond-cond-u y cond-e?
-
29-09-2019 - |
Pregunta
Me han tratado de usar una implementación de mini-kanren en clojure. Pero estado luchando para entender la diferencia entre una cond-cond-u y cond-e. Me parece ser bastante clara acerca de cond-e, pero la comprensión de cond-a y cond-u es mala tranquila.
cond-e tiene un conjunto de metas y luego trata cada uno de ellos ... es decir intenta todas las ramas que tienen éxito.
cond-a y cond-u por el contrario se comprometen a la rama cuyo primer predicado tiene éxito y cond-a declaraciones de todos los posibles unificaciones éxito allí después. mientras cond-u devuelve sólo la primera unificación exitosa ... pero sin embargo parece que este entendimiento no es correcta cuando lo uso. ¿Puede alguien me ayuda aclarar esta comprensión.
Solución
cond-e da todas las respuestas de todas las ramas que tienen éxito
cond-i da a cada respuesta, pero intercala ellos.
cond-A sólo da las respuestas de la primera rama de éxito
cond-T sólo da la primera respuesta de la primera rama de éxito
Otros consejos
Yo sólo estaba tratando de conseguir mi cabeza alrededor de estos asuntos. Hay un esquema de aplicación shortified Sokuza-kanren con algunos comentarios, lo voy a leer esta noche.