我有一个想要列出所有a的函数dataType.
fn [] = []
fn (dt@(DataType t d y [(f,r)]):dts) = ["T:" ++ t ++ " D: " ++ d ++ " R: " ++ show y ++ "Ra" ++ show (fnAvg dt)] ++ fn dts
Run Code Online (Sandbox Code Playgroud)
其中t和d是字符串,y是一个int,f是一个字符串,r是一个int(不确定f和r是否重要,将解释为什么).
我得到错误非详尽的模式,并假设这是因为当列表中只有一个元素时我没有一个,所以我在其他模式之间添加了这个:
fn [dt@(DataType t d y [(f,r)])] = ["T:" ++ t ++ " D: " ++ d ++ " R: " ++ show y ++ "Ra" ++ show (fnAvg dt)]
Run Code Online (Sandbox Code Playgroud)
它编译了,但是当我调用它时,它再一次告诉我'非详尽的模式'.我很难想到我错过了什么样的模式,我是否应该在之后添加一个通配符模式来捕获所有内容?我不是在找人写出答案,但欢迎提示或建议.
该模式[(f,r)]仅在列表包含一个元素时匹配.如果它包含零个,或两个或任何其他数字,则表明模式匹配失败.
在这种情况下代码应该做什么,我不能说......