我想在Haskell中實現上面的DPLL算法。但問題是我不知道如何獲得多個if語句來運行。 所以我想,你可以模式匹配的第一個2 if語句。但是你不能爲第三和第四做?因爲它們都必須運行,並且return語句也必須運行。
如何使多個if語句就像在Haskell上面?另外,我對Haskell很新,所以我不能做任何「複雜」的事情。
我想在Haskell中實現上面的DPLL算法。但問題是我不知道如何獲得多個if語句來運行。 所以我想,你可以模式匹配的第一個2 if語句。但是你不能爲第三和第四做?因爲它們都必須運行,並且return語句也必須運行。
如何使多個if語句就像在Haskell上面?另外,我對Haskell很新,所以我不能做任何「複雜」的事情。
使用模式警衛。例如
dpll clauses symbols modell
| "all clauses true" = true
| "some clauses false" = false
| (p,value) <- find_pure_symbol symbols clauses model,
nonnull p = dpll clauses ...
| (p,value) <- find_unit_clause clauses model,
nonnull p = dpll clauses ...
| p <- first symbols, r <- rest symbols =
dpll clauses ... || dpll clauses ....
(看起來並不是所有的條款真並不意味着一些條款虛假的,否則你永遠無法達到第3和下面的情況。)
挑戰就制定的條件,例子中我與他們打上「在他們身邊,但他們爲bool類型的正常哈斯克爾表達式。
如果你是‘很新的哈斯克爾’,你‘不能做複雜的事情’也許寫DPLL SAT求解器不是第一運動最合適的選擇。通過一切手段,給它一個嘗試,但它可能是有幫助的,以熟悉的語言SOLV首先是一些更基本的任務。 – chi