我已經開始尋找Mercury語言,這看起來很有趣。我是一個新的邏輯編程,但在Scala和Haskell的函數式編程方面非常有經驗。我一直在思考的一件事是,爲什麼當你已經有了至少應該和類型相同的謂詞時,你需要邏輯編程中的類型。 例如,什麼樣的好處是有在下面的代碼片段(來自水星教程拍攝)使用類型: :- type list(T) ---> [] ; [T | list(T)].
:- pred f
在Mercury中,我可以聲明一個lambda具有與包含lambda的謂詞模式相同的決定性嗎? 這是我正在嘗試做的。我寫了一個摺疊函數(下面),它適用於array2d類型。 fold爲數組中的每個元素調用一個調用者提供的謂詞。它工作正常,只要它只接受一個det謂詞作爲參數。 :- pred fold(array2d(T), pred(T, int, int, A, A), A, A).
:
我想知道一個序言,其中可能包括一個內置的通話是這樣的: accum(generator, filter, accumulator)
Calculates all solutions to generator.
For each one, if filter can be proved, accumulator is proved.
Backtracks to find all solutio