我有以下事實:交易所參數
make(product_A, product_Z, product_Y).
make(P, X, Y) :- make(P, Y, X).
我想,以確保從正在取得PRODUCT_A半產品(即product_Z和product_Y)爲真而不管它們的位置放一個問題。
所以我想這個查詢:
make(product_A, product_Y, product_Z).
這一個:
make(product_A, product_Z, product_Y).
應該由序言視爲等同(下同) - 即使我沒放在這兩種情況下作爲Prolog數據庫的事實。換句話說,我希望參數(product_Z和product_Y)在查詢中可交換。
但是當我把代碼放在開頭時,Prolog似乎重複了一個無限循環。
那麼我該如何做到這一點?
謝謝。因此,一個列表需要排序,因爲確保參數順序,然後我應該按字母順序創建所有事實? – forsberg