簡體   English   中英

字符串列表中的 Haskell 數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM