将字符串列表拆分为字符串列表列表

时间:2015-05-11 00:39:29

标签: string haskell dictionary words

我有一个字符串列表。我想在空间上分割每个字符串,例如使用words,生成字符串列表列表。很遗憾,我无法使用map words myList因为地图需要[a] - > [b],而我想要[a] - > [B]]。我该怎么做呢?

我头脑中的另一个选项是递归函数,我将原始列表中的头字符串words分开,然后在那里分析结果,但我试图这样做具有预先存在的功能和单行。

2 个答案:

答案 0 :(得分:3)

'地图'的类型签名是

map :: (a -> b) -> [a] -> [b]

'字的类型签名'是

words :: String -> [String]

因此,地图字的类型签名'是

map words :: [String] -> [[String]]
嘿,这正是你想要的!我们试一试。

map words ["hello world","stack exchange"]

输出:

[["hello","world"],["stack","exchange"]]

答案 1 :(得分:2)

我不确定我理解,您可以使用mapwords来产生这样的结果:

GHCi, version 7.10.1: http://www.haskell.org/ghc/  :? for help
Prelude> let { splitWords [] = []; splitWords ws = map words ws }
Prelude> splitWords []
[]
Prelude> splitWords ["first sentence", "second sentence"]
[["first","sentence"],["second","sentence"]]
Prelude> 

我认为这里带走的重要一点是因为地图预期(a -> b) -> [a] -> [b]并不意味着b必须与a的类型相同。此处a是字符串,b[String]