Frage

Ich habe versucht, eine Implementierung von Mini-kanren in clojure zu verwenden. Aber zu kämpfen, den Unterschied zwischen cond-a cond-u und cond-e zu verstehen. Ich scheine ganz klar über cond-e zu sein, aber das Verständnis von cond-a und cond-u ist ruhig schlecht.

cond-e nimmt eine Reihe von Zielen und dann versucht jeder von ihnen ... d.h versucht, alle Zweige, die Erfolg haben.

cond-a und cond-u im Gegenteil verpflichten, den Zweig, dessen erste Prädikat gelingt und cond-a kehrt alle möglichen erfolgreichen Vereinheitlichungen dort nach. während cond-u gibt nur die erste erfolgreiche Vereinigung ... aber aber es wie dieses Verständnis scheint nicht richtig ist, wenn ich es verwenden. Kann mir jemand helfen, dieses Verständnis klären.

War es hilfreich?

Lösung

cond-e jede Antwort aus allen Branchen gibt, die

Erfolg

cond-i gibt jede Antwort aber Verschachtelungen sie.

cond-a gibt nur die Antworten von der ersten erfolgreichen Zweig

cond-u gibt nur die erste Antwort von der ersten erfolgreichen Zweig

Andere Tipps

Ich habe nur versucht, um diese Dinge den Kopf zu bekommen. Es gibt eine shortified Schema Implementierung Sokuza-kanren mit ein paar Kommentare, werde ich es heute Abend lesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top