2

要素をバイナリツリーに挿入する関数を作成しましたが、実行しようとするたびに、関数に網羅的でないパターンが表示されます。

type Eintrag = (Person, Anschrift, SozNr)

data Tree = Nil | Node Eintrag Tree Tree deriving (Eq, Show)

singleton :: Eintrag -> Tree
singleton x = Node x Nil Nil

genTree :: Eintrag -> Tree-> Tree
genTree x (Node e l r)= if ((Node e l r)==Nil)
    then (singleton  x)
    else if (soznr x) < (soznr e )
            then (Node e (genTree x l) r)
            else if (soznr x) > (soznr  e )
                    then (Node e l (genTree x r))
                    else (Node e l r)

ヒントを教えてください。ありがとう

4

3 に答える 3

1

私が得るエラー(コードにいくつかの定義を追加してコンパイルした後)は次のとおりです。

 Warning:
  Pattern match(es) are non-exhaustive
  In an equation for `genTree': Patterns not matched: _ Nil

これは、次のようなケースを追加する必要があることを示しています。

genTree x Nil = ...
于 2013-11-12T21:20:57.490 に答える
0

以下をファイルの先頭に追加すると (GHC を使用していると仮定して)、「網羅的でないパターン」エラーがどこにあるかを正確に教えてくれます。

{-# OPTIONS_GHC -Wall #-}

他の人がすでに述べたように、Nil ケースがありません。

于 2013-11-13T03:56:50.140 に答える