愚蠢的问题,但是我试图使这个简单的Prolog程序正常工作。我编写了其他小型Prolog程序也没有问题,但这给我带来了麻烦:
test :- write 'test1234 test1234',nl,halt.
Run Code Online (Sandbox Code Playgroud)
而已。该文件另存为adventure1.pl
。使用命令行选项将其加载到Ubuntu上的SWI-Prolog中:
prolog -s adventure1.pl
Run Code Online (Sandbox Code Playgroud)
当加载到Prolog解释器中时,我输入以下内容:
start.
Run Code Online (Sandbox Code Playgroud)
但是,Prolog说undefined procedure: test/0 (DWIM could not correct goal)
。这里的错误是什么,真的很简单。我写这篇文章是因为我有一些示例程序使用一个名为start的前置对象来显示文本,但我什至无法使它正常工作。
write 'test1234 test1234'
Run Code Online (Sandbox Code Playgroud)
是语法错误,正如SWI-Prolog明确指出的那样:
ERROR: /tmp/adventure1.pl:2:10: Syntax error: Operator expected
Run Code Online (Sandbox Code Playgroud)
它应该是
write('test1234 test1234')
Run Code Online (Sandbox Code Playgroud)
(当然,因为定义了test,所以不能解决开始不起作用的问题。)