小编Man*_*asG的帖子

为什么在一系列插入后HashMap不能以正常形式显示?

我一直在尝试确保使用ghc-heap-view包及其提供的utils的Haskell程序的内存模型的严格性,当我发现HashMap插入序列中的s似乎不在NF中时, 。我尝试打印堆树,的确显示出一些问题。然后,我尝试了另一种插入元素的方式(使用union和singleton),但这次严格了。

有人可以解释为什么会这样,并建议我是否可以做些什么来使insert行为与其他方法相同?

这是我的测试代码:

module Main where

import           Control.Exception           (evaluate)
import           Data.Foldable
import           Data.HashMap.Strict         (HashMap)
import qualified Data.HashMap.Strict         as HM
import           GHC.HeapView

test1 :: HashMap Int Int
test1 = foldl' (\m v -> HM.insert v v m) HM.empty [0..5]

test2 :: HashMap Int Int
test2 = foldl' (\m v -> HM.union (HM.singleton v v) m) HM.empty [0..5]

main :: IO ()
main = do
  putStrLn "HeapTree for test1"
  t1 <- evaluate test1 …
Run Code Online (Sandbox Code Playgroud)

haskell strictness unordered-containers

5
推荐指数
1
解决办法
129
查看次数

标签 统计

haskell ×1

strictness ×1

unordered-containers ×1