显式类型绑定中的类型错误(Haskell)

时间:2016-02-08 11:50:20

标签: haskell functional-programming

我正在编写一个非常简单的函数,它通过将某些字符组合替换为另一个字符串来转换字符串。 (例如“ab”到“a”) 我是Haskell中的菜鸟,我收到错误:“明确键入绑定时输入错误”

你能告诉我这是什么问题吗? 代码:

DEFINE_FIVE

谢谢!

1 个答案:

答案 0 :(得分:3)

在最终transform模式中,当字符串文字应为字符时,您使用字符串文字。

transform :: String -> String
transform [] = []
transform [x] = [x]
transform (x:y:xs)
        | x == 'a' && y == 'b' = "a" ++ (transform xs)
        | x == 'b' && y == 'a' = "b" ++ (transform xs)
        | x == 'b' && y == 'b' = "a" ++ (transform xs)
        | x == 'a' && y == 'a' = "aaa" ++ (transform xs)

此外,第二个转换定义中存在一个错误,您需要将x括在括号中,因为它返回了一个字符列表。

(您可能还希望最终模式匹配来处理任何其他输入,因为如果您针对像“zzz”这样的字符串运行此错误,您将收到非详尽的错误。)