为什么赢了';";重复;在GNU prolog中工作是否如预期?
我尝试在GNU1.4.5中运行以下代码 文件名为other.pl 我通过:为什么赢了';";重复;在GNU prolog中工作是否如预期?,prolog,Prolog,我尝试在GNU1.4.5中运行以下代码 文件名为other.pl 我通过:[other]运行它。我通过测试运行函数。 然后我输入一些数字并按enter键。它继续到下一行再次输入数字,但没有写“请输入一个数字” 我不明白为什么prolog不能正确执行repeat 演示: |?- test. Please enter a number1 42 3 ...(keeps allowing me to enter nums) 代码: 标准的read/1谓词读取一个Prolog术语,该术语预期以句
[other]运行它。
我通过测试运行函数。
然后我输入一些数字并按enter键。它继续到下一行再次输入数字,但没有写“请输入一个数字”
我不明白为什么prolog不能正确执行repeat
演示:
|?- test.
Please enter a number1
42
3
...(keeps allowing me to enter nums)
代码:
标准的
read/1
谓词读取一个Prolog术语,该术语预期以句点(
)结束。例如:
| ?- test.
Please enter a number3.
Please enter a number42.
true ?
另外,请注意,当我们在上面输入预期的数字时,GNU Prolog会询问我们是否希望它通过显示true?
来寻找其他证据。这是由于每次调用repeat/0
都会创建一个选择点。使用基于repeat/0
的循环时,应始终在测试后添加剪切。就样式而言,还建议缩进循环体。在这种情况下:
test :-
repeat,
write('Please enter a number'),
read(X),
X =:= 42,
!.
test :-
repeat,
write('Please enter a number'),
read(X),
X =:= 42,
!.