Mini-kanren was ist der Unterschied zwischen cond-a cond-u und cond-e?
-
29-09-2019 - |
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.
Lösung
cond-e jede Antwort aus allen Branchen gibt, die
Erfolgcond-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.