2010-06-01 76 views
17

我想問一下,從零開始/逆向工程實現什麼樣的正式系統會更有趣。什麼更有趣或更強大:咖喱,水星還是Lambda-Prolog?

我已經瀏覽了一些現有的和開源項目的邏輯/聲明式編程系統。我已經決定在我的空閒時間做出類似的事情,或者至少抓住實施的總體思路。

如果這些系統中的某些系統能夠提供邏輯中現代學術調查的大多數表達能力和簡潔性以及與計算模型的關係,那將是非常好的。

你會推薦至少在概念層面上學習什麼?例如,Lambda-Prolog尤其有趣,因爲它允許更高階的關係,但AFAIK基於直覺主義邏輯,因此缺乏排除中間原則;通常對我來說是不利的。

我也歡迎任何關於現代邏輯編程系統的建議,這些編程系統不太受歡迎,但更具表現力/強大。

+0

這是一個類似的問題:http://stackoverflow.com/questions/17675133/most-useful-instructive-functional-logic-language-to-learn?rq=1 – 2015-01-07 22:55:59

回答

16

Prolog是第一種在編程時改變了我的觀點的語言。但後來我發現它不像我想看到的那麼高級。

咖喱 - 我試過只有蒙斯特CC,發現它有點不方便。實際上,在這一點上,我決定停止忽略Haskell。

水星有許多我想在Prolog中看到的東西。我對於區分規則模式的可能性有非常好的期待。用Mercury編寫的程序應該能夠激勵編譯器做很多優化(我猜)。

+4

序言是迷人的。但更重要的是,它的確是「簡單」的。 – alex 2010-06-08 22:11:26

2

對於我所學的編程語言課程中的最終項目,我們必須在Scheme中使用延續和宏來嵌入Prolog評估器。最終的結果是你可以自由地混合Scheme和Prolog代碼,甚至可以將Scheme中寫入的任意謂詞傳遞給Prolog引擎。

這是一個非常有益的練習。前12行代碼(andor)字面上需要大約6個小時才能寫入並得到正確。這幾乎是搜索邏輯,用延續寫得非常簡潔。其餘的更容易一點。然後,一旦我添加統一算法,這一切都工作。

4

如果我試圖擴展基於邏輯系統,我會選擇Prolog Cafe,因爲它是小,開源,符合標準的,並且可以很容易地集成到基於Java的系統。

9

Twelf

它大大地概括了lambda-prolog,它是一個邏輯框架,一個邏輯框架以及一個邏輯編程語言。如果你需要一門專注於邏輯和計算的語言,那就是我所知道的最好的。

+1

目前還沒有任何更新,因爲2013年Twelf你知道,如果它仍然是一個活躍的項目? – 2015-08-31 23:17:44