为什么不探测执行?
问题描述:
为什么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
更为严重,妨碍整个条款的编制。
它不编译,因为这不是整个文件。你想让我包括完整的文件吗? – Luke
我最想做的是一个最小的例子,它可以准确地表明你想解决的问题!也就是说,理想情况下,您应该从文件中删除与该问题无关的所有内容,并包括清楚显示该内容的那些部分。我建议你编辑答案以显示文件的所有相关部分,并排除其余部分。 – mat