我有一个字符串列表。我想要在空间分割每个字符串,例如使用words
,产生一串字符串列表。不幸的是,我不能使用map words myList
,因为地图需要[a] - > [b],而我想要[a] - > [[b]]。我将如何去做这件事?将字符串列表拆分为字符串列表列表
另外一个选项是我的头顶部是一个递归函数,我将头字符串从我的原始列表中分离出来,words
它然后在那里分析结果,然后我试图用pre-现有的功能和一个班轮。
我有一个字符串列表。我想要在空间分割每个字符串,例如使用words
,产生一串字符串列表。不幸的是,我不能使用map words myList
,因为地图需要[a] - > [b],而我想要[a] - > [[b]]。我将如何去做这件事?将字符串列表拆分为字符串列表列表
另外一个选项是我的头顶部是一个递归函数,我将头字符串从我的原始列表中分离出来,words
它然后在那里分析结果,然后我试图用pre-现有的功能和一个班轮。
的“地图”的类型签名是
map :: (a -> b) -> [a] -> [b]
的“单词”的类型签名是
words :: String -> [String]
因此,类型签名'地图字'是
map words :: [String] -> [[String]]
嘿,这是exac tly你想要什么!试一试吧。
map words ["hello world","stack exchange"]
输出:
[["hello","world"],["stack","exchange"]]
我不知道我的理解,你可以使用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]
不需要特殊情况下的空列表。我们已经有了'map words [] = []'。 –
我不明白为什么'地图words'是不是你想要的。你能给个例子吗? – augustss
我得到一个错误,似乎指向'地图字'不工作;然而,经过对答案的提示进一步分析后,我发现我对错误原因的初步分析实际上并不是“地图词”。谢谢大家的帮助! – Birdie