【问题标题】:Prolog helloWorld not workingProlog helloWorld 不工作
【发布时间】:2014-08-23 01:06:56
【问题描述】:

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

test :- write 'test1234 test1234',nl,halt.

就是这样。文件保存为adventure1.pl。它使用命令行选项加载到 Ubuntu 上的 SWI-Prolog:

prolog -s adventure1.pl

当加载到 Prolog 解释器中时,我输入以下内容:

start.

但是,Prolog 说 undefined procedure: test/0 (DWIM could not correct goal)。这里的错误是什么,它真的很简单吗?我写这个是因为我有示例程序使用一个名为 start 的 predecate 来显示文本,但我什至无法让它工作。

【问题讨论】:

    标签: prolog


    【解决方案1】:
    write 'test1234 test1234'
    

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

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

    应该是

    write('test1234 test1234')
    

    (当然,这并不能解决start不工作的问题,因为你已经定义了test。)

    【讨论】:

    • 哇哦,缺少括号!谢谢,我现在觉得很傻。我最近从默认 Ubuntu 存储库安装的 SWI prolog 版本没有给出像你得到的更有意义的错误。
    • @AndrewS 有两个错误,你肯定都得到了。 larsmans 正在谈论的一个语法错误是您没有看到的语法错误,因为它打印在启动横幅上方,因为您在 Prolog 中使用了prolog -s adverture1.pl 而不是[adventure1].。您看到的错误是 lars 所指的,当时他说 start 将不起作用,因为您定义了 test
    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多