我曾嘗試在clojure中使用mini-kanren的實現。但一直在努力去理解cond-a cond-u和cond-e之間的區別。我似乎對cond-e很清楚,但對cond-a和cond-u的理解卻很不好。mini-kanren cond-a cond-u和cond-e的區別是什麼?
cond-e需要一組目標,然後嘗試每個目標......即嘗試所有成功的分支。
cond -a和cond-u相反提交給第一個謂詞成功的分支,cond-a返回所有可能的成功統一。而cond-u只返回第一個成功的統一......但是,當我使用它時,似乎這種理解是不正確的。有人能幫助我澄清這一理解。
謝謝吉姆..但究竟是交錯?它是否像它從每個分支得到一個成功的答案..在回到下一個成功答案的第一個分支之前......? – 2010-11-08 04:56:48
根據你的解釋,無論我使用cond-u還是cond-a代替cond-,下面的代碼應該表現相同。 (運行q (存在[X] (cond- ((&X:未分配) 失敗) (成功)) (&Q 20)))但是,這似乎並沒有這樣的情況?你能解釋一下嗎? – 2010-11-08 06:09:45