所以我正在创建一个这样的函数:
unlinhas::[String]->String
uninhas [x] = ""
unlinhas (x:xs) = x ++ "\n" ++(unlinhas( xs))
给定一个像["arroz","atum"]
这样的字符串列表应该给"arroz\natum\n"
问题是我创建的这个函数说明了非详尽的模式。
答案 0 :(得分:5)
您的第一个模式[x]
是一个列表,其中包含一个元素。所以Haskell编译器想知道如何处理空列表。
此外,在第一行中,您编写uninhas
而不是unlinhas
,因此Haskell编译器认为您编写了两个不同的函数。
但是,根据您的规范,您希望处理空列表,以便可以使用以下命令进行修复:
unlinhas:: [String] -> String
unlinhas [] = ""
unlinhas (x:xs) = x ++ "\n" ++(unlinhas( xs))
您可以进一步清理代码,并将其写为:
unlinhas:: [String] -> String
unlinhas [] = ""
unlinhas (x:xs) = x ++ '\n' : unlinhas xs