【问题标题】:First use of SWI-Prolog首次使用 SWI-Prolog
【发布时间】:2011-03-07 16:55:16
【问题描述】:

我是 Prolog 的新手。我只是想从 Windows Vista 上的 Prolog 获得一些输出。

我已经下载并安装了 Prolog 5.1;我在安装时选择了 .pro 文件扩展名(不要与 Perl 文件混淆)。

我创建了一个名为test.pro 的文件。 在这个文件中,我放了以下内容:

inside(tom).
?-inside(tom).

我双击该文件并弹出一个命令行界面。在这个界面上(在一堆通用 Prolog 版本/版权信息之后)唯一的输出是:

1 ?-

好的,对于初学者来说,我没想到它会一个问题;我希望它回答一个问题(类似于“是”的问题)。

无论如何,我尝试用以下内容回复查询:

在命令行中我重新插入了'inside(tom).',所以整行看起来像:

1 ?- inside(tom).

我按下 Enter 并收到一条错误消息:

ERROR: toplevel: Undefined procedure: inside/1 (DWIM could not correct goal)

【问题讨论】:

    标签: prolog


    【解决方案1】:

    如果您没有告诉它事实,Prolog 不会回答问题。 (除了一些内置的事实,例如member(1, [1,2,3])。)

    你可以告诉它谁在里​​面(评论跟随%):

    1 ?- [user].                          % get facts and rules from user input
    |: inside(mary).                      % Mary and John are explicitly inside
    |: inside(john).
    |: inside(X) :- location(X, house).   % rule: anyone in the house is inside
    |: inside(X) :- location(X, office).  % (variables start with a capital letter)
    |: 
    |: location(tom, house).
    |: location(bernard, house).
    |: location(anne, office).
    |:                                    % type Ctrl+D
    % user://1 compiled 0.00 sec, 1,220 bytes
    true.
    
    2 ?- inside(tom).                     % Prolog deduces that Tom is inside
    true .
    

    如果你想学习 Prolog,Learn Prolog Now 是一个很好的免费教程。

    【讨论】:

      【解决方案2】:

      您需要先编译它(在 prolog 中也称为“咨询”)。如果我知道您拥有哪个版本的 prolog,我可以找到该命令的确切键条目(Ctrl-L 可能有效)。顺便说一句,欢迎来到 prolog 的精彩世界——我喜欢它 :) 一旦你越过了这个障碍,它就会变得更好。 :)

      【讨论】:

      • 我猜这是 SWI-Prolog(你可能会对有多少不同的“prologs”感到惊讶)。在这种情况下,“咨询...”在主文件菜单上 - 它会提示您加载文件,因此只需重新加载此文件,您就应该准备就绪。事实上,你必须先询问它一个查询,然后它才会做任何事情——这就是任何 prolog 程序的工作原理。
      • 是的,SWI-Prolog。我发现了,我想我编译了文件。起初,当我从文件菜单中选择“咨询”选项时,我没有看到名为 test.pro 的文件。我不得不选择查看“所有文件”(这很奇怪,也许 prolog 无法识别 .pro 文件)以使文件变得明显;我选择了它,它似乎可以编译。我收到消息:“dir.../test.pro 已编译 0.00 秒,1,696 字节”,但我没有在同一目录中看到已编译的文件,目前正在搜索与 Prolog 一起安装的新目录结构安装。
      • 我重新安装了 SWI-Prolog,但将文件扩展名的默认值保留为 .pl 。这似乎是问题所在……除了按照您的建议通过菜单“文件/咨询”进行编译之外。感谢您的帮助。
      【解决方案3】:

      又快又脏。缺少的是“编译”文件,称为咨询 语法如下,该行中的所有字符都是相关的。

      ?- [文件名]。

      然后你可以用什么数据库来提问和做其他事情。(prolog中的源代码)

      http://www.swi-prolog.org/pldoc/man?section=quickstart

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-16
        • 1970-01-01
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多