我可以按如下格式定義的一個事實,事實形成與天花板在序言
test(X, ceiling(sqrt(X))).
其中,X
有關ceiling(sqrt(X))
。
我想,我可以做下面的接收所需的輸出,
test(X, Y) :- Y is ceiling(sqrt(X)).
我可以按如下格式定義的一個事實,事實形成與天花板在序言
test(X, ceiling(sqrt(X))).
其中,X
有關ceiling(sqrt(X))
。
我想,我可以做下面的接收所需的輸出,
test(X, Y) :- Y is ceiling(sqrt(X)).
您可以定義:test(X, ceiling(sqrt(X))).
這意味着你必須在上述形式其實原子,所以如果你查詢:
?- test(X, ceiling(sqrt(X))).
true.
因爲你定義了這個條款。 但請注意,如果您查詢:
?- test(1.5, 2).
false.
這是因爲2是天花板(的sqrt(1.5)),但謂詞是等待像天花板上的語法返回false(開方(1.5)),而不是結果2
又如:
?- test(1.5, Y).
Y = ceiling(sqrt(1.5)).
和
?- test(X,ceiling(sqrt(1.5))).
X = 1.5.
還要注意:
test(X) :- X is ceiling(sqrt(X)).
總是失敗的任何輸入X(因爲沒有這樣的X等於天花板(sqrt(X))。 )和查詢測試(X)會因爲/ 2而導致實例化問題。
也許你的意思寫的是:
test(X,X1) :- X1 is ceiling(sqrt(X)).
很抱歉,但我不明白您的從句
test(X) :- X is ceiling(sqrt(X)).
你強加式(不賦值:等式)「X = ceiling(sqrt(X))」。
我覺得你的意圖是
test(X, Y) :- Y is ceiling(sqrt(X)).
這是你想要什麼?
你是對的,謝謝。 –
你是對的,謝謝! –
很高興幫助! – coder