迭代矩阵时的非穷举模式

时间:2015-10-16 03:50:27

标签: haskell recursion matrix

所以我对haskell很新,而且在迭代矩阵时我不太确定如何处理这个错误。我猜这是一个我不考虑的案例,但我无法弄清楚它是什么。我有两个函数,一个将列表转换为字符串,另一个将矩阵转换为字符串。这是我的两个功能:

listToString :: [Int] -> String 
listToString [] = "\n"
listToString (x:xs) = show x ++ " " ++ listToString xs 

matToString :: [[Int]] -> String 
matToString [[]] = ""
matToString (y:x:xs)) = listToString y ++  matToString (x:xs)

listToString工作正常,但matToString没有。我想知道是否有人可以帮我解决这个问题。我一直很难理解Haskell,因为我之前从未编写过函数式编程语言,或者至少没有一个纯函数编程语言。

1 个答案:

答案 0 :(得分:1)

你的递归案例涵盖了至少有两个参数的每个列表,所以这很酷。问题是你的基本情况 - 它只涵盖了一个只有一个元素的列表,本身就是空列表。

将其添加到文件的最顶部:{-# OPTIONS_GHC -Wall #-}。这应该会给你一个详细的编译器警告,指出哪些模式缺失。