swi-prolog

    4熱度

    4回答

    這聽起來很傻,但可以說我的謂詞最大/ 2返回的最大元素的列表...輸出應該是這樣的: ?- largest([1,2,3,4,5], X). X = 5. false. 我實現最大的,它的工作原理類似上面除了它doesn輸出「false」。我如何做到這一點,所以它也輸出這個「錯誤」。值?這是一個令人討厭的任務,我必須完成。 :(

    0熱度

    2回答

    我有一個三元組格式的rdf文件(file.trp),其中每行都是一個格式良好的三元組: 「主體謂詞對象」。 我試圖使用semweb/rdf_db rdf_load加載到內存中,但沒有成功。這裏是我的嘗試: ?- rdf_load('file.trp'). ?- rdf_load('file.trp', [format(triples)]). 的跟蹤顯示,我們的目標在失敗: rdf_db:r

    0熱度

    1回答

    我有以下簡單的序言斷言從序言謂詞閱讀: tst(In, Out) :- Out = In. 的想法很明確,簡單地返回相同的「輸出」,如「在」被接收到。好的,現在我想把這個prolog謂詞包含在XPCE程序中。我創建了一個窗口並添加了一個應該調用此prolog謂詞的按鈕,然後顯示在「Out」中返回的值。我認爲實現這一任務將如此簡單 send(Dialog, append(button(execu

    4熱度

    3回答

    我想在贏得xp中使用SWI-Prolog。我正試圖理解如何將Prolog中的一個句子分解爲單獨的原子。 例如:說我有這樣的句子: 「這是一個字符串」 有沒有什麼辦法讓單個詞語來獲取存儲在一個變量? 像: X =此 Y =是 .... 等等。 任何人都可以請解釋這是如何工作的? 謝謝。

    0熱度

    1回答

    我在嘗試弄清楚如何獲取序言,以便在我想要的地方吐出文本文件時遇到問題。我目前正在做一堆操作,然後使用 tell('output.txt') 來記錄輸出。現在問題是,當我這樣做時,它會在SWI \ bin \文件夾中創建該文件。我想知道是否有辦法讓它在包含實際.pl文件的目錄中創建該文件。所以,即使文件被移動了(它會是),文本文件就會在源文件所在的位置被創建。 長話短說,一旦源文件被諮詢過,有沒

    1熱度

    1回答

    我想寫一個ruby包裝swi-prolog。任何人都可以請告訴我如何着手編寫一個? 如果有人請解釋我在嘗試寫這種類型時需要考慮哪些步驟,我將不勝感激。

    25熱度

    2回答

    我SWI-Prolog的知識庫包含以下兩個事實: f(a,b). f(a,c). 現在,如果我提出查詢 ?- f(a,c). true. 但 ?- f(a,b). true ; false. 爲什麼F(A,B)是真是假?當知識庫中有三個事實時也會發生這種情況。如果我追加f(a,d)。到KB,則f(a,d)爲真(僅),但是f(a,b)和f(a,c)都是真和假。發生了什麼,以及我能

    1熱度

    1回答

    我正在使用Prolog的C++接口(SWI-cpp.h的類和方法)。爲制定一個簡單的回溯約翰喜歡瑪麗和艾瑪和Sara: likes(john, mary). likes(john, emma). likes(john, ashley). 我可以這樣做: { PlFrame fr; PlTermv av(2); av[0] = PlCompound("john"

    2熱度

    1回答

    unix中的典型工作流程是使用以較少的尋呼機結尾的過濾器管道。例如。 (省略參數) grep | sed | awk | less 現在,在SWI-序言的命令行典型的工作流程中的一個要求它給予了一整套的解決方案對於像 foo(X),bar(X, Y),qux(buz, Y). 給定的結合這容易給我一套soutions。這可能比終端窗口長得多。或單個查詢 give_me_long_list(

    0熱度

    1回答

    假設我有下面的程序: #include files PREDICATE(add, 3) { return A3 = (long)A1 + (long)A2; } int main(int argc, char** argv) { PlEngine e(argv[0]); PlCall("consult('myFile.pl')"); PL_ha