2010-09-17 48 views
3

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

​​

如同例如, 。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 

因为我不知道很多哈斯克尔我期待用于当前库中的解决方法或等效函数。谁能帮我?

回答

5

只要找出旧的lookup在每种可能的情况下都做了什么并且复制了功能。

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

那么这将是

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

清理:'lookupM EL =也许(不及格 “元素不图”)的回报。 lookup el' – sclv 2010-09-17 14:03:10

+2

@sclv:真的,默契风格总是不错的;)但是由于OP说他对Haskell不太了解,所以我想要明确(因此稍微冗长一点) – Dario 2010-09-17 16:06:25

+0

谢谢,它可行! – 2010-09-17 17:07:45