在Ubuntu中进行Prolog编程

41

我对于玩和尝试使用Prolog语言有兴趣,我已经安装了SWI-Prolog并添加了仓库。如果有人对我使用的命令感兴趣的话,这是它们:

% sudo apt-add-repository ppa:swi-prolog/stable
% sudo apt-get update
% sudo apt-get install swi-prolog

我该如何在我的Linux机器上开始编写Prolog代码呢?对于我的日常编程,我使用VIM进行编写/编辑/调试,使用终端进行编译。我可以使用VIM来编写Prolog吗?我应该如何编译或使用Prolog解释器(我认为这就是它的称呼)?


3
请注意,SWI-Prolog可以直接从Ubuntu软件源中安装(即无需添加PPA):sudo apt-get install swi-prolog - Flux
2
谢谢@Flux,但应该是sudo apt-get install swi-prolog - Deepam Gupta
@Genius 是的。谢谢。那是一个打错字。 - Flux
6个回答

53

是的,您可以使用任何文本编辑器,包括VIM。一旦您编写了Prolog源文件,比如说file.pl,您可以像这样将其加载到SWI-Prolog中:

swipl -s file.pl

这将编译您的文件并带您进入一个交互式shell,您可以在其中针对文件中的定义提出查询。

如果您想在批处理模式下使用Prolog程序,则可以使用:

swipl -s file.pl -t goal

其中goal是您想要评估的目标/查询。请注意,在这种情况下,您将不会得到要求替代解决方案的选项。


谢谢,我会尝试一下这些。有没有一个命令可以退出prolog shell呢?我不想每次重新运行或编辑代码时都要打开和关闭终端。 - octain
在这里讨论了VIM中的语法高亮以及VIM识别“.pl”文件为Perl而不是Prolog的解决方法:https://dev59.com/KmIk5IYBdhLWcg3wE6h8 - Paul Brown

12

在Ubuntu上,我一开始使用的是Emacs,至少它提供了语法高亮:

http://www.swi-prolog.org/FAQ/GnuEmacs.html

(该页面上有两个Emacs的建议^)

但是现在我会用Prolog来开发程序,我使用一个Eclipse插件,叫做PDT:

http://sewiki.iai.uni-bonn.de/research/pdt/docs/v2.1/start

特别有用的是实时逐行调试和跟踪功能,因此您可以像在其他真正的可以在Eclipse中找到的IDE一样,单步调试、跳过单个谓词、监视变量名等。

如果你将经常使用Prolog,那么安装这个插件可能值得,因为安装需要很多工作,但它是一个非常优秀的IDE。

但是,如果你喜欢类似于VIM这样的低级编辑器,你将不得不使用内置在SWI-Prolog中的调试和跟踪工具,参见:

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

要了解奇特而美丽的Prolog解释器是如何工作的,使用某种跟踪器是必不可少的。


谢谢您的建议,我一定会尝试一下。我从来不太喜欢IDE,特别是Eclipse,我最喜欢使用VIM,我以前用过Emacs,也会尝试一下。 - octain

2

我个人在解释环境中使用gprolog或swipl。 因此,您需要在mydb.pl文件中编写事实和规则,并在同一目录中打开解释器。 一旦提示出现,您可以查询。

['mydb.pl'].

用于加载数据库。现在,您可以查看警告和错误,或从prolog解释器内部开始查询。


1
亲友,我也使用vim来编辑prolog代码。个人做法是将我的prolog文件保存为“.pl”扩展名,然后在终端上使用prolog交互环境来查询我的文件。 例如: 要启动prolog交互环境,只需在终端上输入:
prolog

现在您已经进入了SWI-Prolog,您可以使用“consult”即预定义的伪谓词,使Prolog代码加载到正在运行的Prolog解释器中:

?- consult("filename.pl")

就是这样!


0

您可以使用任何文本编辑器来编写您的代码。只需确保将您的代码保存为.pl扩展名,如fibo.pl。 之后打开终端并转到您保存代码的位置。 之后输入prolog 然后写上您的文件名,但不要加上.pl扩展名,并以. ['fibo']. 结尾,然后按下return

例如 - cd /home/student/14917
prolog
['fibo'].


这里fibo.pl是我的程序名称


0

我在Mac上使用Sublime Text和SWI Prolog,非常好用。在Sublime Text中,只需按下cmd-B即可运行代码,并且输出结果会在Sublime Text的窗口中显示。这里有一个相关的软件包here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接