我正在编写一个非常简单的函数,它通过将某些字符组合替换为另一个字符串来转换字符串。 (例如“ab”到“a”) 我是Haskell中的菜鸟,我收到错误:“明确键入绑定时输入错误”
你能告诉我这是什么问题吗? 代码:
DEFINE_FIVE
谢谢!
答案 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”这样的字符串运行此错误,您将收到非详尽的错误。)