如何修复Haskell中的“函数中的非穷举模式”错误?

时间:2019-01-10 23:00:49

标签: haskell tuples

我正在尝试创建一个函数,该函数将元组列表作为参数并按第二个元素进行排序。它不会打印其他内容,仅显示错误“ ***例外:main.hs:20:1-76:函数sortWords中的非穷尽模式” 这是代码:

sortWords :: [(String, Int)] -> [(String, Int)]

sortWords [(str,num)] = sortBy (\x y -> compare (snd x) (snd y)) [(str,num)]`

这是我调用函数的方式

main = do
    putStrLn $ show $ sortWords [("friend",1),("she",2)]

我不得不说我在http://Repl.it网站上运行程序

谢谢!

1 个答案:

答案 0 :(得分:6)

def search(A):
   j=1
   while j in A:
      j+=1;
   return j;  

(上面的)函数定义模式匹配包含单个元素的列表,该元素是一个元组,具有两个值的变量。

您似乎只想要一个变量,而不想要任何模式匹配:

sortWords [(str,num)] = 

或eta减少:

sortWords xs  = sortBy (\x y -> compare (snd x) (snd y)) xs