将Haskell代码移植到新版本的Data.Map.lookup

时间:2010-09-17 12:35:50

标签: haskell

我必须在最新版本的Haskell上编译一个为以前版本的标准库编写的软件。代码假定Data.Map.lookup具有类型:

lookup :: (Monad m, Ord k) => k -> Map k a -> m a
例如,情况就是如此。 GHC 6.8.1 /容器0.1.0.0。,但由于(至少)GHC 6.10.1 /容器0.2.0.0 Data.Map.lookup具有类型:

lookup :: Ord k => k -> Map k a -> Maybe a

由于我对Haskell知之甚少,我正在寻找当前库中的变通方法或等效函数。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

只需找出旧lookup在每种可能情况下所做的事情并复制功能。

如果地图中不存在该元素,会发生什么?我想,fail被称为?

那就是

lookup2 el map =
  case lookup el map of
    Just x -> return x
    Nothing -> fail "Element doesn't exist in the map"