在Prolog,給出事實的知識基礎:爲什麼在不同元素數量的事實之間的setof輸出有差異?
someFact(one).
someFact(two).
otherFact(one, two, 123, 456).
otherFact(one, four, 789, 123).
查詢setof(X, someFact(X), List).
會產生這樣的結果:
List = [one, two]
但是,查詢setof(X, otherFact(one, X,_,_), List
產生這樣的:
List = [two]
雖然我預計它會產生[two,four]
。使用this源我發現打字;
返回第一個列表時,會顯示所有其他選項:
List = [two] ;
List = [four] .
它爲什麼要這樣做呢?是因爲下劃線?我如何生成一個既有two
也有four
,而不需要按;
? 我不知道如何找到答案,因爲我有麻煩將這個問題的措詞轉換成產生搜索結果的問題
原則進行的拇指:'_'和'SETOF/3'不要扎堆。 – false