Haskell中的运行时错误

Haskell中的运行时错误,haskell,tuples,runtime-error,Haskell,Tuples,Runtime Error,我的程序是在元组列表中搜索我写的如下 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 inde

我的程序是在元组列表中搜索我写的如下

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)]]
导入列表
数据BookInfo=Book Int String[String]
派生(显示)
输入::Int->String->[String]->BookInfo
输入id name subject=图书id name subject
簿记id(簿记id)=id
索引::BookInfo->Int
索引(图书id名称主题)=图书id(图书id名称主题)
阵列输入::BookInfo->[BookInfo]->[BookInfo]
阵列输入(图书id名称主题)[]=[(图书id名称主题)]
阵列输入(书本[“”])[]=[]
arrayentering(图书id名称主题)[(图书名称项目)]=
(图书id名称主题):[(图书it名称主题)]
收费表::[BookInfo]->[Int]
toList[(图书id名称主题)]=地图索引[(图书id名称主题)]
气泡排序::(Ord t)=>[t]->[t]
气泡排序[x,y,z,xs]=
如果x[[t]]->[[t]]
superBubble a=贴图气泡排序a
组合::[BookInfo]->[[Int]]
合并[(图书id名称主题)]=超级泡泡[toList[(图书id名称主题)]]
并清除所有语法错误,但在我尝试输入tuple to
combling()
列表后,它会提示我运行时错误

异常:函数Main中没有详尽的模式。组合

这是什么意思


请只给我指示。如果可能,我想自己修复它。函数定义中的模式

combining [(Book id name subject)]=superBubble [toList [(Book id name subject)]]
仅匹配具有一个元素的列表。您在
bubbleSort
中遇到了类似的问题,其中

bubbleSort[x,y,z,xs]=
仅匹配正好包含四个元素的列表和其他位置

我还没有弄清楚它是如何工作的,也许是使用了一个变量模式(匹配所有参数)

是否合适


我怀疑

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

对不起,但是
isSpace
的导入文件必须
导入数据.Char
。但是你最好不要首先构造无效的
Book
s.+1,因为你不想得到给出的答案
arrayentering book bookList
    | empty book = bookList
    | otherwise  = book : bookList
      where
        empty (Book _ name subject) = all isSpace name && all (all isSpace) subject