我有一个字符串列表。我想在空间上分割每个字符串,例如使用words
,生成字符串列表列表。很遗憾,我无法使用map words myList
因为地图需要[a] - > [b],而我想要[a] - > [B]]。我该怎么做呢?
我头脑中的另一个选项是递归函数,我将原始列表中的头字符串words
分开,然后在那里分析结果,但我试图这样做具有预先存在的功能和单行。
答案 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)
我不确定我理解,您可以使用map
和words
来产生这样的结果:
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]