应该将列表转换为字符串的函数解析错误 - haskell

parse error in function that is supposed to convert list to string - haskell

所以我的函数'flatten'是把一个字符和数字列表变成一个字符串

flatten :: [(Char, Int)] -> String
flatten [] = []
flatten [(x,y):xs)] = x:(show y ++ flatten xs)

但我一直收到解析错误,谁能帮我理解一下?谢谢

 parse error (possibly incorrect indentation or mismatched brackets)
   |
18 | flatten :: [(Char, Int)] -> String
   | ^

编译错误可能源于 函数 flatten 之前,例如您忘记关闭括号。

至于 flatten 函数本身,对于第二个子句,您不应使用方括号,否则您将定义一个二元组列表列表的模式。因此,您使用 (x, y):xs) 作为模式:

flatten :: [(Char, Int)] -> String
flatten [] = []
flatten <strong>((x,y):xs)</strong> = x : show y ++ flatten xs
flatten [(x,y):xs)] = x:(show y ++ flatten xs)
                 ^