Haskell在String中转换字符

时间:2014-11-15 14:43:09

标签: string haskell char transpose

我正在尝试编写以下形式的函数:

f :: String -> [String]
f st = ...

它应该显示字符串中所有可能的字符转置。 例如:

ghci> f "string"
["tsring","srting","stirng","strnig","strign"]

正如您所看到的那样,它应该仅使用当前字符转置下一个字符。 我目前有:

f :: String -> [String]
f [] = []
f (x:xs) = ...

但我不知道如何实际转置字符。

1 个答案:

答案 0 :(得分:4)

f :: String -> [String]
f (x:y:xs) = (y:x:xs) : map (x:) (f (y:xs))
f      xs  = []

请注意,f [x]会返回[],但如果需要,则很容易修复。