这是我收到的错误消息:
Couldn't match expected type `[(Char, Int)]'
against inferred type `(a, b)'
In the pattern: (c, n)
In the definition of `decode':
decode (c, n) = map (\ (c, n) -> replicate n c)
这是我的代码
decode :: [(Char,Int)] -> String
decode (c, n) = map (\ (c, n) -> replicate n c)
答案 0 :(得分:2)
模式(c,n)
的类型(a,b)
与类型[(Char, Int)]
不匹配。换句话说,你说的是参数列表是对,但你的模式只匹配一对。
同样,map
的返回值将是字符串列表,而不是类型签名所暗示的单个字符串。如果您想要一个字符串,则需要使用concatMap
。
所以你的代码看起来像这样:
decode pairs = concatMap (\ (c, n) -> replicate n c) pairs
或只是
decode = concatMap (\ (c, n) -> replicate n c)