[英]How to define a predicate in prolog
我是Prolog的新手,到目前為止我已經學會了如何在文件中定義謂詞並運行解釋器來使用它。 但我想知道是否有一種方法可以在? - 提示符下定義謂詞,這樣我就不必來回切換。
我現在這樣做的方式是這樣的
文件defs.pl:
adjacent(1,2).
adjacent(1,3).
在prolog翻譯:
?- consult('defs.pl').
% defs.pl compiled 0.00 sec, 122 bytes
true.
?- adjacent(1,2).
true.
編輯也許我的意思是如何定義'事實'我不確定。
您可以使用assert/1
謂詞:
?- assert(adjacent(1,4)).
true
編輯:順便說一句,如果您嘗試將其與文件中定義的謂詞組合,這將不起作用。 因此,要么在文件中定義所有相鄰的/ 2謂詞,請在命令行中使用assert定義它們。
如果您確實想要在文件中定義一些謂詞,而其他謂詞定義為assert,則在文件中聲明謂詞是動態的:
% file contents
:- dynamic(adjacent/2).
adjacent(1,2).
adjacent(1,3).
你可以做
?- consult(user).
要么
?- [user].
然后輸入子句,然后用文件末尾字符終止輸入(在Linux中為Ctrl-D,在MS-Windows中可以是Ctrl-Z)。 這相當於讀取文件,請參閱consult / 1的文檔 。
assert / 1和retract / 1用於由代碼動態更改的謂詞(即用於存儲全局數據),而不是用於正常編程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.