Prolog helloWorld无法正常工作

And*_*w S 0 prolog

愚蠢的问题,但是我试图使这个简单的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的前置对象来显示文本,但我什至无法使它正常工作。

Fre*_*Foo 5

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,所以不能解决开始不起作用的问题。)

  • @AndrewS有两个错误,您肯定两个都犯了。larsmans谈论的是一个语法错误,您没有看到它,因为它被打印在启动横幅的上方,因为您在Prolog中使用了`prolog -s adverture1.pl`而不是`[adventure1] .`。您看到的错误是lars所说的“开始”将不起作用,因为您定义了“测试”,这是他指的是什么。 (2认同)