为什么不探测执行?

问题描述:

为什么Probe不能执行?这不是整个程序,但应该有足够的代码来找到答案。是的,我已经在堆栈溢出中寻找答案,但对于Prolog没有太大的帮助。它是扫雷游戏的一部分。为什么不探测执行?

play :-  
    play(0). 

play(M) :- 
    N is M + 1, 
    Suf <- N, 
    display_board(visible), nl, 
    format("Your ~d~a move~n", [N,Suf]), 
    retrieve('Coordinates? ', [A,B]), 
    format("DEBUG: probing at coordinates [~d,~d]~n", [A, B]), 
    !, probe(A,B), 
    play(N). 


probe(X, Y) :- 
    write("enter probe"), 
    located_at(Who, X, Y, C), 
    C = 'b', 
    write('should probe '), 
    write('at ['), 
    write(X), write(','), write(Y), write(']'), nl. 
    :- style_check(+singleton). 

让我们退后一步,先尝试找出:为什么程序甚至没有编译

当咨询您发布的程序,我得到:

 
ERROR: file.pl:6:6: Syntax error: Operator expected 

这是这行:这不是有效的Prolog语法

 
    Suf <- N 

因此,我建议先解决这个问题。

事实上,我得到进一步:

Warning: file.pl:14: Singleton variables: [Who]

这也不是一个好兆头。但是ERROR更为严重,妨碍整个条款的编制。

+0

它不编译,因为这不是整个文件。你想让我包括完整的文件吗? – Luke

+1

我最想做的是一个最小的例子,它可以准确地表明你想解决的问题!也就是说,理想情况下,您应该从文件中删除与该问题无关的所有内容,并包括清楚显示该内容的那些部分。我建议你编辑答案以显示文件的所有相关部分,并排除其余部分。 – mat