0

在此处输入图像描述

我想在 Haskell 中实现上面的 DPLL 算法。但问题是我不知道如何运行多个 if 语句。所以我在想,你可以对前 2 个 if 语句进行模式匹配。但你不能为第三和第四?因为它们都必须运行,return 语句也必须运行。

如何在 Haskell 中创建多个类似上述的 if 语句?此外,我对 Haskell 还是很陌生,所以我无法做任何“复杂”的事情。

4

1 回答 1

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 种及以下情况。)

接下来的挑战是制定条件,在示例中,我在它们周围用 " 标记了它们,但它们是 Bool 类型的正常 Haskell 表达式。

于 2016-02-13T23:03:31.903 回答