0

ここに画像の説明を入力

上記の DPLL アルゴリズムを Haskell で実装したいと思います。しかし問題は、複数の if ステートメントを実行する方法がわからないことです。だから私は考えていた、最初の 2 つの if ステートメントのパターン マッチを行うことができます。でも、3回目と4回目はできないの?それらの両方を実行する必要があり、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 ....

(すべての句が true であるとは限らず、一部の句が false であるとは限らないようです。そうしないと、3 番目以降のケースに到達できません。)

次に課題は、条件を定式化することです。この例では、条件を " で囲んでいますが、これらは Bool 型の通常の Haskell 式です。

于 2016-02-13T23:03:31.903 に答える