如何在prolog中定义谓词

Nat*_*han 6 prolog

我是Prolog的新手,到目前为止我已经学会了如何在文件中定义谓词并运行解释器来使用它.但我想知道是否有一种方法可以在? - 提示符下定义谓词,这样我就不必来回切换.

我现在这样做的方式是这样的

文件defs.pl:

adjacent(1,2).
adjacent(1,3).
Run Code Online (Sandbox Code Playgroud)

在prolog翻译:

?- consult('defs.pl').
% defs.pl compiled 0.00 sec, 122 bytes
true.
?- adjacent(1,2).
true.
Run Code Online (Sandbox Code Playgroud)

编辑也许我的意思是如何定义'事实'我不确定.

cat*_*try 12

您可以使用assert/1谓词:

?- assert(adjacent(1,4)).
true
Run Code Online (Sandbox Code Playgroud)

编辑:顺便说一句,如果您尝试将其与文件中定义的谓词组合,这将不起作用.因此,要么在文件中定义所有相邻的/ 2谓词,请在命令行中使用assert定义它们.

如果您确实想要在文件中定义一些谓词,而其他谓词定义为assert,则在文件中声明谓词是动态的:

% file contents
:- dynamic(adjacent/2).
adjacent(1,2).
adjacent(1,3).
Run Code Online (Sandbox Code Playgroud)