家庭作业Prolog帮助:=:= / 2:参数没有充分实例化

时间:2017-11-11 21:21:26

标签: prolog predicate rule instantiation-error

我不想在线发布整个家庭作业和所有代码,所以我只是把具体问题放在哪里。如有必要,我可以添加和解释更多。

但实质上,我编写代码然后由我的教授代码进行测试。我的代码在逻辑上按照他的指示工作。在我的代码的特定snipett中,我应该检查它是否是有效的移动。在第一个和最后一个参数中,列表代表[传教士,食人族,是否离岸很近]。我的代码工作并通过所有测试,除非我的教授传递了_和M1和M2。

我的代码

move([M1,_,L1],onemissionary,[M2,_,L2]) :-
    L1 == near, L2 == far, M1 =:= M2+1;
    L1 == far, L2 == near, M2 =:= M1+1.

他的代码调用我的代码并导致错误。

move([_,2,near],onemissionary,[_,1,far]).

错误:

=:=/2: Arguments are not sufficiently instantiated

所以我理解它崩溃了,因为我的老师的测试代码为_M1投入M2因此尝试执行{{1}时出错}。但是,我无法更改他的测试代码,那么我怎样才能更改代码,以便不会出现错误,而是返回失败?

0 个答案:

没有答案