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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top