以下函数编译但运行时输出非穷举模式错误
hufMerge :: CodeTable -> CodeTable -> CodeTable
hufMerge [(x,a)] [(y,b)] = foldr (:) (map add0 [(x,a)]) (map add1 [(y,b)])
hufMerge [(x,a)] [] = map add0 [(x,a)]
hufMerge [] [(y,b)] = map add1 [(y,b)]
hufMerge [] [] = []
Run Code Online (Sandbox Code Playgroud)
哪里
type CodeTable = [(Char,[Integer])]
Run Code Online (Sandbox Code Playgroud)
我没有看到错误的来源,我是否必须做2 ^ 4个案例,其中[(x,a)] [(y,b)],x,a,y或b可以为零?
我相信你的意思
hufMerge :: CodeTable -> CodeTable -> CodeTable
hufMerge [] [] = []
hufMerge xs [] = map add0 xs
hufMerge [] ys = map add1 ys
hufMerge xs ys = foldr (:) (map add0 xs) (map add1 ys)
Run Code Online (Sandbox Code Playgroud)
如果匹配,则匹配精确长度为1 [foo]的列表,然后匹配该元素与任何模式.foo
作为如何匹配列表的快速目录,
_忽略该值xs例如,模式将与任何列表绑定(x:xs)将第一个元素绑定到x并休息xs[x, y, z ...]这只是糖x : y : z .... : []| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |