2013-03-14 49 views
0

我刚安装了最新的haskell平台,无法在Control.Concurrent中找到forkFinally,我有forkIO,并且能够直接从hackage中窃取代码,它可以工作罚款:当前haskell平台丢失fork最后

forkFinally :: Exception e => IO a -> (Either e a -> IO()) -> IO ThreadId 
forkFinally action and_then = 
    mask $ \restore -> 
    forkIO $ try (restore action) >>= and_then 

任何人有任何提示或线索这里发生了什么? Hackage和我所有的搜索似乎都表明fork最终应该是平台自带的默认Control.Concurrent模块的标准部分...

回答

4

最新版本的base是4.6.0.1;目前的Haskell平台(2012.4.0.0)带有base-4.5.1.0。 forkFinally在base-4.6.0.0中是新的。

Link to Control.Concurrent.forkFinally in base-4.6.0.0.

Link to Control.Concurrent in base-4.5.1.0.如果你搜索的页面,你会发现,forkFinally不存在。

+0

啊,谢谢!我推测最新的haskell平台也会有最新的库(或者至少比这更近,它看起来像fork最后几个月前去过..) – 2013-03-14 21:30:26

+1

对于带有GHC(例如base)的库,Haskell平台使用GHC自带的版本。它不会自动使用GHC的最新版本 - 它使用已经出现一段时间(几个月)的最新版本的GHC,并且证明它本身不包含任何令人讨厌的错误。 (免责声明:这是我的印象,我不是Haskell平台维护者,我不为他们代言等) – dave4420 2013-03-14 21:50:53