是兩個[a,b,c,d,e]還是[[X] | [b,c,d,e]]是否可以統一?我需要確認我認爲他們不是因爲你不能以任何方式得到[X] = a?Unifiable Prolog條款
2
A
回答
2
我認爲你需要統一[X | [b,c,d,e]]
而不是[[X] | [b,c,d,e]]
,即你可以得到X=a
,而不是[X]=a
。
3
你的假設是正確的:[X]
,我們可以改寫爲.(X,[])
不能與原子a
統一。
我們可以將[X|[b,c,d,e]]
改寫爲.(_G231,.(b,.(c,.(d,.(e,[])))))
,即[X,a,b,c,d,e]
。
您可以使用display/1查看沒有語法糖的形狀。
1
如果X由於某種原因需要被包含在一個列表中,那麼您將無法將其統一(如chac所述)。但您可以使用追加謂詞來獲得匹配:
?- append([X], [b,c,d,e], [a,b,c,d,e]).
X = a
相關問題
- 1. 幫助prolog的條款
- 2. 使用列表的Prolog祖先條款
- 3. Prolog如何評估此條款?
- 4. 條款
- 5. 條款
- 6. 服務條款和緩存條款
- 7. Android SQLite更新條款與條款
- 8. 條款聲明內部條款
- 9. OR條件的Prolog
- 10. SWI Prolog - 條件NOT?
- 11. 不能條款
- 12. DB2與條款
- 13. 當在條款
- 14. Asp:EntityDataSource:在條款
- 15. 在條款
- 16. 在SUM條款
- 17. MS Access條款
- 18. PHP finally條款
- 19. 返回條款
- 20. Pyspark:在條款
- 21. 條紋付款
- 22. 的條款
- 23. 條款ORDER BY
- 24. 當條款
- 25. 有條款......?
- 26. AREL:用條款
- 27. LinqToSQL在條款
- 28. 在條款
- 29. 在條款
- 30. 用條款