我需要做這樣的事情:我如何計算列表中每個字符串的位置與每個字符串的發生次數?
func ["a","bb","c","aa","bb","c"] ⟼
[("a",[0]), ("bb",[1,4]),("c",[2,5]),("aa",3)]
使用此項功能:
func :: [String] -> [(String, [Int])]
我的想法是這樣的:
func :: [String] -> [(String, [Int])]
func (xs) = func1 (reverse xs)
where
func1 [] = []
func1 (x:xs)
| notElem x xs = func1 (xs) ++ [(x, [0])]
| otherwise = func1 (xs)
0只是一個佔位符,怎麼能我把這些指數放在那個位置?
如果您不限制使用列表作爲結果數據類型我建議您切換到'Data.Map' - 然後'insertWith'函數非常方便 - 特別是 - 結合在@Chad-Gilbert推薦的'zip'上的'fold' – epsilonhalbe