为什么不'探测执行?

时间:2016-11-20 23:52:11

标签: functional-programming prolog

为什么Probe没有执行?这不是整个程序,但应该是足够的代码来找到答案。是的,我已经在Stack Overflow上搜索了答案,但对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).

1 个答案:

答案 0 :(得分:1)

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

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

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

这句话说:

   Suf <- N

这不是有效的Prolog语法。

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

事实上,我进一步得到:

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

这也不是一个好兆头。但是ERROR更严重,阻止了整个条款的编译。