2016-11-28 53 views
-1

我想檢查一個變量,比如說X,是一個謂詞add()。我如何檢查這是否屬實? X == add()不起作用,X也不是添加(_)。我怎樣才能做到這一點?在Prolog中比較一個變量和一個謂詞

+1

它如果你提供了一些上下文,會更容易。 – 2016-11-28 11:33:19

+1

你正在做一些猜測,而不查找文檔中的'==/2'和'is/2'是什麼意思。對我的'add'有什麼參數有任何約束嗎?這個問題在你的問題中還不清楚如果它只是一個參數,你可以使用'X = add(_)'。如果它是任意的,你可以使用'= ..'運算符,'X = .. [add | _]'。如果你至少需要一個參數,那麼'X = .. [add,_ | _]'。 – lurker

+0

我的上下文中的添加將單個列表作爲參數。這就是爲什麼我試着'X == add(_)'。但是,這不起作用。任何替代品? –

回答

1

一般的,通用的方法來做到這一點是:

Specific = add(_), ..., subsumes_term(add(_Any), Specific). 

通常,人們將優化這:

Specific = add(_), ..., nonvar(Specific), Specific = add(_). 

但在一般情況下,你需要subsumes_term/2