我想在Haskell中实现上面的DPLL算法。但问题是我不知道如何运行多个if语句。 所以我在想,你可以为前两个if语句模式匹配。但你不能为第三和第四个做到这一点?因为它们都必须运行并且return语句也必须运行。
如何在Haskell中创建多个if语句?我对Haskell也很陌生,所以我无法做任何“复杂”的事情。
答案 0 :(得分:4)
使用图案防护装置。例如
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和以下的情况。)
然后挑战是制定条件,在示例中我用&#34;标记它们。在他们周围,但他们是Bool类型的正常haskell表达。