2

私のプログラムは 、次のように書いたタプルのリストを検索しています

import List
data BookInfo = Book Int String [String]
  deriving(Show)

enter :: Int->String->[String]->BookInfo
enter id name subject=Book id name subject
bookId   (Book id _     _  ) = id

index :: BookInfo -> Int
index (Book id name subject) =  bookId  (Book id name subject) 

arrayentering ::BookInfo->[BookInfo]->[BookInfo]
arrayentering (Book id name subject) [] =[(Book id name subject)]
arrayentering (Book  _  "     " ["    "]) [] =[]
arrayentering (Book id name subject) [(Book it namr suject)]=                         
              (Book id name subject):[(Book it name suject)]
toList::[BookInfo]->[Int]
toList [(Book id name subject) ]=   map index [ (Book id name subject)]

bubbleSort::(Ord t) => [t]->[t]
bubbleSort[x,y,z,xs]=
                if x<y then x : [y,z,xs]
                       else y : [x,z,xs]

superBubble::(Ord t) => [[t]]->[[t]]
superBubble a=map bubbleSort a

combining::[BookInfo]->[[Int]]
combining [(Book id name subject)]=superBubble [toList [(Book id name subject)]]

構文エラーがないようにクリーンアップしますが、タプルのリストを入力しようとすると、combining()ランタイムエラーが発生します。

Exception:Not Exhaustive pattern in function Main.combining

これは何を意味するのでしょうか?

指示だけをお願いします。できれば自分で直したいです。

4

1 に答える 1

3

関数定義のパターン

combining [(Book id name subject)]=superBubble [toList [(Book id name subject)]]

要素が1つだけのリストのみに一致します。で同様の問題がありますbubbleSort

bubbleSort[x,y,z,xs]=

正確に4つの要素を持つリストと他の場所にのみ一致します。

おそらく可変パターン(すべての引数に一致する)を使用して、それがどのように機能することを意図しているのかわかりません

combining books = superBubble (toList books)

適切でしょうか?


疑わしい

arrayentering ::BookInfo->[BookInfo]->[BookInfo]
arrayentering (Book id name subject) [] =[(Book id name subject)]
arrayentering (Book  _  "     " ["    "]) [] =[]
arrayentering (Book id name subject) [(Book it namr suject)]=                         
              (Book id name subject):[(Book it name suject)]

本当にする必要があります

arrayentering book bookList
    | empty book = bookList
    | otherwise  = book : bookList
      where
        empty (Book _ name subject) = all isSpace name && all (all isSpace) subject

empty間違っている可能性があります)。

そして、toListおそらくただのはずmap indexです。

于 2012-07-16T19:57:27.953 に答える