2015-05-11 224 views
-1

我有一個字符串列表。我想要在空間分割每個字符串,例如使用words,產生一串字符串列表。不幸的是,我不能使用map words myList,因爲地圖需要[a] - > [b],而我想要[a] - > [[b]]。我將如何去做這件事?將字符串列表拆分爲字符串列表列表

另外一個選項是我的頭頂部是一個遞歸函數,我將頭字符串從我的原始列表中分離出來,words它然後在那裏分析結果,然後我試圖用pre-現有的功能和一個班輪。

+0

我不明白爲什麼'地圖words'是不是你想要的。你能給個例子嗎? – augustss

+0

我得到一個錯誤,似乎指向'地圖字'不工作;然而,經過對答案的提示進一步分析後,我發現我對錯誤原因的初步分析實際上並不是「地圖詞」。謝謝大家的幫助! – Birdie

回答

3

的「地圖」的類型簽名是

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

的「單詞」的類型簽名是

words :: String -> [String] 

因此,類型簽名'地圖字'是

map words :: [String] -> [[String]] 

嘿,這是exac tly你想要什麼!試一試吧。

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

輸出:

[["hello","world"],["stack","exchange"]] 
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]

+0

不需要特殊情況下的空列表。我們已經有了'map words [] = []'。 –