2011-07-09 84 views
2

有一些聲明(簡單)序言謂詞和斷言某些事實的任何戰鬥考驗的方式,在的JavaScript客戶端代碼?簡單的Prolog謂詞在JavaScript

我能找到的最好的是http://www.csse.monash.edu.au/~lloyd/tildeLogic/Prolog.toy/Ch/04.Techn1.shtml,但看起來像是在調用一些服務器端的「玩具」解釋器。

+2

什麼是您的應用程序嗎? JavaScript不是Prolog,不管怎樣,所以如果你想描述**爲什麼要在JavaScript代碼中聲明Prolog謂詞,可能會有所幫助。 (這是什麼意思,一件事?你需要這些謂詞來做* *) – Pointy

+4

也許看看[Prolog in Javascript](http://ioctl.org/logic/prolog-latest)或者[Yeild Prolog](http://yieldprolog.sourceforge.net/)。既不實施WAM,但可能足夠你的目的。 – sharky

回答

1

關於Prolog的好處是,它有一個很好的回溯和統一引擎的語言本身。 Javascript(因爲大多數語言,BTW)沒有這個,所以沒有辦法獲得「免費」的Prolog風格的功能。

當然,你可以做的是爲Prolog的子集編寫一個解釋器(或者將它作爲一個庫從某處獲得)並將它傳遞給它,編碼爲一些漂亮的JS數據結構。

但是,那你爲什麼要這樣呢?你只需要回溯?你需要複雜的統一嗎?也許只是寫一個遞歸搜索函數就足夠了?你的問題並沒有提供很多細節。

+0

我需要的是陳述事實並且有很簡單的推論,所以它確實是一個非常整齊的序言子集。 –

1

我不是Prolog的專家,我認爲其他答案給出了很好的建議,但這可能是一個很好的圖書館,爲你正在做的事情。它真的很小。

它確實爲數組原型添加了邏輯,我可以想象重構它以使語法更清晰......但個人而言,我很喜歡它的簡潔性。

代碼包含2個示例。

http://tinlizzie.org/ometa/ometa-js-old/prolog-base.js