我必须在最新版本的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知之甚少,我正在寻找当前库中的变通方法或等效函数。任何人都可以帮助我吗?
答案 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"