meta-predicate

    0熱度

    2回答

    我正在進行一項練習,藉此我試圖使用= ..謂詞編寫一個過程,該過程刪除列表中PredName(X)失敗的所有元素並返回其餘列表作爲結果: filter(List, PredName, Result) 在這種情況下與PredName被定義爲: test(N) :- atom(N). 例如: ?- filter([a,b,-6,7,A,-1,0,B], test, L). L = [a,b,

    5熱度

    1回答

    目標使用SWI-Prolog(多線程,64位,版本7.3.5), 模塊擴展我們按部就班: 在模塊dcgAux定義dcg非終結a//1 (發音: 「二SEE-吳」): :- module(dcgAux,[a//1]). a(0) --> []. a(s(N)) --> [a], a(N). 執行如下查詢,使用phrase/2和apply:foldl/4: ?- use_module

    1熱度

    2回答

    我想出來的行使下列事實 byCar(auckland,hamilton). byCar(hamilton,raglan). byCar(valmont,saarbruecken). byCar(valmont,metz). byTrain(metz,frankfurt). byTrain(saarbruecken,frankfurt). byTrain(metz,paris). b

    7熱度

    1回答

    Hilog術語(即具有作爲函子任意術語的化合物)仍然被視爲XSB Prolog(或任何其他Prolog)中的強大特徵? 目前有很多XSB項目使用這個功能嗎?他們中的哪一個? 我問,因爲據我所知,使用ISO內置呼叫/ N,同樣可以進行更高階的編程。 具體而言,我想了解XSB是否僅出於歷史原因使用Hilog術語,或者Hilog術語與現行ISO標準相比具有相當大的優勢。

    2熱度

    2回答

    我需要定義一個謂詞acyclic/1,它將圖作爲輸入並確定該圖是否是非循環的。因此,從我的理解 graph1(a,b). graph1(b,c). graph1(c,a). 將不會返回和 graph2(a,b). graph2(b,c). 將返回是 我做了一個斷言,以確定是否在圖2個節點相連接,如果是的話,他們將返回是。 isConnected(X,Y) :- a(X,Z), isC

    1熱度

    1回答

    我一直在閱讀並注意到,諸如調用的謂詞被稱爲元謂語,並且它們可以返回其他謂詞作爲結果(不知道返回是否很好地利用了單詞這裏)例如這裏: assert(call(goal, X,Y)). 編輯:lurker打電話給我的理由,這是行不通的。 據我所知,它不應該調用謂詞函數,但是有沒有一種方法來斷言直到運行時纔會知道的謂詞? 我想爲多個事實使用相同的插入謂詞,所以assert(fact(X))不適合我的

    1熱度

    2回答

    正如標題所示,我想編寫一個程序來完成此操作。 一個例子是: ?- count(member(X,[1,2,3]), N). N = 3 Yes 但不僅爲會員構建,同時也爲像一些運營商: ?- count(17 =:= 12 + 5, N). N = 1 Yes 有人可以幫助我開始了嗎?

    1熱度

    1回答

    我正在使用Sicstus Prolog,並試圖解決Domino拼圖問題。 我有一個三胞胎列表,我需要設置的域名。我知道如何設置單個變量的域或單個變量的列表,但是如果我的列表具有三元組,並且三元組中的每個元素都有不同的域,我該如何做? DV = [R1-C1-D1, R2-C2-D2, ... , R15-C15-D15] 我想要做的是這樣的: domain(R1, 1, 4) domain(

    3熱度

    3回答

    我想寫一個謂詞filter(List, PredName, Result),它過濾所有元素的List,其目標PredName失敗並隨後返回Result列表。謂詞PredName/1應該調用過程filter/3時被定義並可以例如是: test(N) :- N >= 0 查詢然後可以做出類似以下內容: ?- filter([-6,7,-1,0], test, L) L = [7, 0]; no