2010-09-17 27 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