我在Mac OSX上的SWI Prolog中的? - 提示符之后尝试了括号和单引号的各种组合。没有任何效果。该命令是否应该一次加载一堆文件?在我进入? - 提示之前,我会输入一些东西吗?
如果有人能告诉我下面#1的确切内容,那就太棒了。 (我不是程序员,但我一直在努力为我的认知科学课程介绍找到一个简单的专家系统shell。我已经尝试了Amzi鸟类的事情大约一百万次,除了错误之外什么都没有Amzi以及SWI)。谢谢!
Prolog专家系统(APES) http://apes.sourceforge.net/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
运行:
更新: (非常感谢hardmath和user882813!)我得到一个命令不存在错误“swipl -f main.pl”,所以我手动启动SWI Prolog abd加载main.pl。这是main.pl的代码:
% A Prolog Expert System (APES)
% http://apes.sourceforge.net/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
:- ensure_loaded('engine.pl').
:- ensure_loaded('tokenizer.pl').
:- ensure_loaded('parser.pl').
:- ensure_loaded('knowledge/knowledge.pl').
:- ensure_loaded('knowledge/groups/*.pl').
:- ensure_loaded('helpers.pl').
:- ensure_loaded('processor.pl').
start:-
%dynamic((::)/2),
write('_____________________________________________________'),
nl,nl,
loop_read_in(_).
loop_read_in(X):-
% from tokenizer.pl (clocksin & mellish, "programming in prolog"):
read_in(X),
process(X),
loop_read_in(_).
loop_read_in(X):-
read_in(X),
not(process(X)),
!,fail.
但是这里发生了什么:当我进入开始时我得到一个文件不存在错误: 错误:/Users/leesebastiani/prologfiles/main.pl:10: source_sink`knowledge / groups / * .pl'不存在
但是当我尝试手动加载时,我得到了这个: ? - ['knowledge / groups / *。pl']。 错误:/Users/leesebastiani/prologfiles/main.pl:10: source_sink`knowledge / groups / * .pl'不存在 警告:/Users/leesebastiani/prologfiles/main.pl:10: 目标(指令)失败:用户:ensure_loaded(knowledge / groups / * .pl)
我想让我的学生们轻松一点。这是我上一次完整的会议:
?- ['main.pl'].
% engine.pl compiled 0.00 sec, 64 clauses
% tokenizer.pl compiled 0.00 sec, 62 clauses
% parser.pl compiled 0.00 sec, 32 clauses
% knowledge/knowledge.pl compiled 0.00 sec, 17 clauses
ERROR: /Users/leesebastiani/prologfiles/main.pl:10:
source_sink `knowledge/groups/*.pl' does not exist
Warning: /Users/leesebastiani/prologfiles/main.pl:10:
Goal (directive) failed: user:ensure_loaded(knowledge/groups/*.pl)
% helpers.pl compiled 0.00 sec, 24 clauses
% processor.pl compiled 0.00 sec, 12 clauses
% main.pl compiled 0.01 sec, 227 clauses
true.
?- ['knowledge/groups/*.pl'].
% knowledge/groups/feline.pl compiled 0.00 sec, 2 clauses
% knowledge/groups/pet.pl compiled 0.00 sec, 5 clauses
true.
?- ['main.pl'].
ERROR: /Users/leesebastiani/prologfiles/main.pl:10:
source_sink `knowledge/groups/*.pl' does not exist
Warning: /Users/leesebastiani/prologfiles/main.pl:10:
Goal (directive) failed: user:ensure_loaded(knowledge/groups/*.pl)
% main.pl compiled 0.00 sec, 1 clauses
true.
?-
感谢您的任何建议!
答案 0 :(得分:2)
对我来说,这是有效的(在Mac OS 10.8.5上):
$ git clone https://github.com/fsteeg/apes.git
[...]
$ cd com.quui.apes/src/
$ swipl -f main.pl
?- start.
我使用的是GitHub版本,但代码应该是相同的。你的SWI-Prolog版本会出现问题吗?我用Homebrew(http://brew.sh/)安装了我的:
$ brew install swi-prolog
[...]
$ swipl --version
SWI-Prolog version 6.0.2 for i386-darwin12.5.0
如果这没有帮助,您是否可以在运行swipl -f main.pl
时提供有关原始问题的一些详细信息?
答案 1 :(得分:0)
命令“swipl -f main.pl”是在OS命令提示符下输入的,而不是在? - 提示符下的SWI-Prolog中输入的。
该命令执行顶级命令解释程序并加载Prolog源文件main.pl
。
答案 2 :(得分:0)
在这种情况下,“swipl -f main.pl”是一个在命令行提示符下输入的命令,它启动swi-prolog并加载主程序文件。
如果您已经启动了SWI-Prolog,那么只需通过File⇒Open菜单项从APES distrubution打开main.pl文件,然后输入“start”。 (不带引号)并按回车。
更新:我收到了关于:- ensure_loaded('knowledge/groups/*.pl').
行的相同错误,只是用两行代替*.pl
取代了确切的文件名:
:- ensure_loaded('knowledge/groups/feline.pl').
:- ensure_loaded('knowledge/groups/pet.pl').
不确定这是解决此问题的正确方法。
答案 3 :(得分:0)
AMZI教程已经过时了。试图让它在没有Prolog知识的情况下运行,看起来像一个痛苦的世界。 你可能想找到别的东西。这太糟糕了 - 这是一个很棒的教程。
如果您是专家系统的新手,请让我建议CLIPS
http://clipsrules.sourceforge.net/
Prolog不是它自己的专家系统shell。 Prolog是一种编程语言。当然,它是编写这样一个shell的绝佳选择。