Prolog helloWorld不工作

Prolog helloWorld不工作,prolog,Prolog,这是一个愚蠢的问题,但我正试图让这个简单的Prolog程序正常工作。我写过其他小的Prolog程序,没有问题,但这一个给我带来了麻烦: test :- write 'test1234 test1234',nl,halt. 就这样。该文件另存为adventure1.pl。它通过命令行选项加载到Ubuntu上的SWI Prolog中: prolog -s adventure1.pl 当加载到Prolog解释器时,我输入以下内容: start. 然而,Prolog说未定义的过程:test/0(D

这是一个愚蠢的问题,但我正试图让这个简单的Prolog程序正常工作。我写过其他小的Prolog程序,没有问题,但这一个给我带来了麻烦:

test :- write 'test1234 test1234',nl,halt.
就这样。该文件另存为
adventure1.pl
。它通过命令行选项加载到Ubuntu上的SWI Prolog中:

prolog -s adventure1.pl
当加载到Prolog解释器时,我输入以下内容:

start.
然而,Prolog说
未定义的过程:test/0(DWIM无法纠正目标)
。这里的错误是什么,是不是很简单。我写这篇文章是因为我有一些示例程序使用一个名为start的predecate来显示文本,但我甚至不能让它工作

write 'test1234 test1234'
是一个语法错误,正如SWI Prolog明确指出的:

ERROR: /tmp/adventure1.pl:2:10: Syntax error: Operator expected
应该是

write('test1234 test1234')
(当然,这并不能解决开始不工作的问题,因为您已经定义了测试。)

是一个语法错误,正如SWI Prolog明确指出的:

ERROR: /tmp/adventure1.pl:2:10: Syntax error: Operator expected
应该是

write('test1234 test1234')

(当然,这并不能解决开始不工作的问题,因为您已经定义了测试。)

Aww捕捉,缺少括号!谢谢,我现在觉得自己很愚蠢。最近从默认Ubuntu存储库安装的我的SWI prolog版本并没有出现像您这样更有意义的错误。@AndrewS有两个错误,您肯定都遇到了。larsmans提到的一个语法错误是您没有看到的,因为它是在启动横幅上打印的,因为您使用了
prolog-s adverture1.pl
而不是prolog中的
[adventure1]。
。你看到的错误是lars所指的,他说,
start
不起作用,因为你定义了
test
。哎呀,snap,缺少括号!谢谢,我现在觉得自己很愚蠢。最近从默认Ubuntu存储库安装的我的SWI prolog版本并没有出现像您这样更有意义的错误。@AndrewS有两个错误,您肯定都遇到了。larsmans提到的一个语法错误是您没有看到的,因为它是在启动横幅上打印的,因为您使用了
prolog-s adverture1.pl
而不是prolog中的
[adventure1]。
。您看到的错误是lars所指的,他说
start
不起作用,因为您定义了
test