我有一個文件中記錄的是使用兩個IntMaps:如何使用不同的鍵類型的IntMap?
data Doc = Doc { kernels :: IntMap Kernel, nodes :: IntMap Node }
但是我發現,從兩個IntMaps按鍵有不同的意義,我不兩個型動物種類分離並沒有得到錯誤,當混合內核類型和節點類型。我想要具有檢查內核映射和節點映射中的密鑰並且不允許混淆的函數。 E.g:
someFunction :: Doc -> KernelKey -> NodeKey -> a
someFunction doc k1 k2 = .....
相反的電流:
someFunction :: Doc -> Int -> Int -> a
someFunction doc k1 k2 = .... -- warning check twice k1 and k2
難道是更多鈔票?或者我將從IntMap
更改爲Map
。
感謝
你使用'IntMap'而不是'Map'是什麼原因?如果是性能,那麼你應該考慮'無序容器'(這可能是你最好的解決方案,但值得考慮)。 –
另請參閱有關'IntSet'的相關問題http://stackoverflow.com/questions/5746590/how-to-newtype-intset ...你可能想看看['enummapset' package](http:/ /hackage.haskell.org/package/enummapset),這是我目前使用的 – hvr