f(9) = f(A), X = A, X = T * T
為什么 prolog 看不到 A = 9, X = 9, T = 3/-3,我在這里犯了語法錯誤嗎?如果是這樣,此查詢的正確形式是什么?我錯了,但這個等式顯然有一個簡單的答案。
uj5u.com熱心網友回復:
從某種意義上說,您犯了一個有趣的錯誤,因為您神奇地期望 prolog 能夠從約束 (X=T*T) 推匯出解決方案(注意:這是一件好事,這是一個非常 prolog 的期望)。有兩件事在這里不起作用
- 為了讓 prolog 理解你想要評估一個數學運算式,你需要使用“is”而不是 equal
- 你需要給序言一個關于哪些值可能適用于 T 的提示
這是您嘗試的東西附近的東西,它會起作用
f(9) = f(A), X = A, between(-100,100,T), X is T * T
uj5u.com熱心網友回復:
除了@madeofmistake 已經提出的好的解決方案,另一種選擇是使用庫進行有限域上的約束邏輯編程(clpfd)。加載此庫后,您可以使用運算子#=來評估算術約束。
?- use_module(library(clpfd)).
true.
?- f(9) = f(A), X = A, X #= T * T.
A = X, X = 9,
T in -3 \/ 3.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/378577.html
上一篇:如何將線性漸變添加到邊框樣式中?
