字符串列表

时间:2017-10-15 06:43:48

标签: arrays sorting haskell

所以我有一个字符串列表,任务是计算该列表中每个字符串可以满足的次数。 我用地图:

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类的成员,问题是:是否可以从字符串列表构建数组?

1 个答案:

答案 0 :(得分:1)

Data.HashMap(lazy / strict)是vanilla haskell地图的更快版本 - 如果瓶颈主要是更新/查找速度,使用它们可以加快操作速度。

最好的部分是你可以保持已经编写过的干净利落的方法,而不必编写与数组交互的代码(通常是丑陋的)。