[英]What is the difference between :- and ?- in Prolog?
這個Prolog程序打印Hello
:
main :-
write('Hello'), nl.
:- main.
我將(:-)/1
更改為(?-)/1
:
main :-
write('Hello'), nl.
?- main.
這產生完全相同的結果。 這也打印Hello
。
那么(:-)/1
和(?-)/1
之間有什么區別?
term與主函子(:-)/1
的參數稱為指令 。 在Prolog標准中,它在7.4.2指令中定義。
另外,5.5.5表示:
處理器可以支持一個或多個附加指令指示符(7.4.2)作為特定於實現的特征。
因此,在一些Prolog系統中, (?-)/1
可用作附加指令。
在ISO Prolog中, :-
僅用於操作符聲明等指令。 ?-
運算符也被定義,但沒有給出任何含義。
這些操作符來自於1978年的DEC系統10 Prolog,它們分別稱為命令和問題。 同時:- p(X).
剛剛在咨詢過程中測試了p(X)
的成功, ?- p(X).
顯示了一個實際的答案並提示進一步的答案。 因此,您在加載文件時會進行一些交互,這些交互在后續系統中被放棄,這使得兩個運算符的行為方式相同。
自DEC10以來,許多系統打印?-
作為頂級循環的提示,提醒下一個讀入的術語將被解釋並作為一個問題回答。 有些系統甚至更進一步,並添加提示符的解釋|
在它面前。
兩者:-
和?-
被指定為ISO Prolog核心標准中的前綴運算符:
Priority Specifier Operator(s)
...
1200 fx :- ?-
?-
前綴運算符主要是歷史原因。 它的語義與:-
prefix運算符相同,盡管我沒有在Markus的答案中提到的標准中找到澄清它的聲明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.