2010-04-09 75 views
2

我陷入了一些我在Prolog中不太明白的錯誤。調用規則,當我得到這個錯誤(這似乎有時工作?):Prolog實例化錯誤?

error(instantiation_error,Var0)

任何人都可以向我解釋這是什麼意思?

,所以我有兩個規則:

special(X) :- user(X, Days), Days >= 20.

special(X) :- premiumuser(X).

user(guy, 40).

雖然用戶被添加動態有時它不是在Prolog的分貝。我可以消除第一個特殊(x)規則,並且錯誤消失。

當召呼:

special(someone).

我得到的錯誤

+0

您是否可以消除任一規則並仍然重現錯誤?用戶/ 2的事實/規則怎麼樣? – ShiDoiSi 2010-04-09 14:15:59

+0

好的,看我的原創貼子,謝謝。 – KP65 2010-04-09 14:19:58

+0

我不能在SWI-Prolog中用你的代碼重現錯誤,假設定義了'premiumuser/1'。 – 2010-04-10 14:05:51

回答

0

這意味着你已經應用了仿函數只用原子(例如,<)一個非實例變量的運行方式。在我們可以告訴你之前,你需要發佈最少的代碼來展示問題。

+0

在主帖中增加了一些信息,謝謝 – KP65 2010-04-09 14:11:23