[英]Haskell array from list of strings
所以我有一個字符串列表,任務是計算每個字符串在該列表中出現的次數。 我使用了地圖:
freqMap = M.fromListWith (+) [(c, 1) | c <- subs]
並且只是排序:
frequency list = map (\l -> (length l, head l)) $ group (sort list)
但這對我的任務來說太慢了 - 原始列表非常大。 我聽說,使用未裝箱的數組可以非常快。 喜歡整數列表:
histogram bounds xs = accumArray (+) 0 bounds [(x, 1) | x <- xs]
由於 String 不是 Ix 類的成員,問題是:是否可以從字符串列表構建數組?
Data.HashMap
(lazy/strict) 是 vanilla haskell 映射的更快版本 - 如果瓶頸主要是更新/查找速度,使用它們可能會加快您的操作。
最好的部分是你可以保持你已經編寫的漂亮干凈的方法,而不必編寫(通常是丑陋的)與數組交互的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.