将String转换为bigram列表

1 haskell

我开始学习haskell,我需要你帮助一些可能很简单的东西,但我无法解决.

我有一个字符串:

ABCDEFG
Run Code Online (Sandbox Code Playgroud)

我需要将此字符串转换为以下格式:

A-B
B-C
C-D
D-E
E-F
F-G
Run Code Online (Sandbox Code Playgroud)

有人可以给我一些提示吗?谢谢.

tho*_*ron 6

使用时只需zipData.List这样的:

let str = "ABCDEFG"
in zip str $ tail str
Run Code Online (Sandbox Code Playgroud)

它返回一对对列表[(Char, Char)].

然后输出像你的问题,你可以做这样的事情:

main :: IO ()
main = do
  let str     = "ABCDEFGH"
      couples = zip str $ tail str
  mapM_ (\(x,y) -> putStrLn $ x : '-' : y : "") couples 
Run Code Online (Sandbox Code Playgroud)

  • ...可以进一步压缩到`zipWithM_(\ xy - > putStrLn $ [x,' - ',y])str(tail str)`. (5认同)