簡體   English   中英

有什么區別: - 和? - 在Prolog中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM