Domanda

Ho cercato di usare un'implementazione di mini-Kanren in clojure. Ma state lottando per capire la differenza tra cond-a cond-u e cond-e. Mi sembra di essere molto chiaro circa cond-e, ma la comprensione di cond-a e cond-u è tranquillo male.

cond-e prende una serie di obiettivi e poi cerca ognuno di loro ... cioè cerca tutti i rami che hanno successo.

cond-a e cond-u, al contrario, si impegnano al ramo il cui primo predicato riesce e cond-a restituisce tutte le possibili unificazioni di successo ci sarà dopo. mentre cond-u restituisce solo la prima unificazione successo ... ma comunque sembra che questa comprensione non è corretto quando lo uso. Qualcuno può aiutarmi chiarire questa comprensione.

È stato utile?

Soluzione

cond-e dà ogni risposta da tutti i rami che si succedono

cond-i dà ad ogni risposta, ma intercalari loro.

cond-a fornisce solo le risposte del primo ramo di successo

cond-u dà solo la prima risposta dal primo ramo successo

Altri suggerimenti

Stavo solo cercando di ottenere la mia testa intorno a questi argomenti. C'è un'implementazione schema shortified Sokuza-Kanren con qualche commento, lo leggerò stasera.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top