4

我有一个返回我IO (Map.Map String Double)并且我需要的函数Map.Map String Double,没有 IO。

我试图这样做,但它失败了:不在范围内:数据构造函数'IO'。

extractIO (IO (a)) = a
4

2 回答 2

13

你不能只是打开 IO,这就是 IO 的全部意义所在。

如果你有一个 IO(Map.Map String Double)并且你想处理那个东西,你必须在 monadic 上下文中进行,即

stuff :: IO ()
stuff = do
  map <- theThingThatReturnsYourIOMap
  theThingThatNeedsYourUnwrappedMap map

如果您更详细地解释您想要做什么,我们可以给您更详细的答案。

于 2013-05-27T12:49:05.250 回答
1

http://cvs.haskell.org/Hugs/pages/libraries/base/System-IO-Unsafe.html

不安全的执行IO

但这是个坏主意。

于 2013-05-27T12:51:15.303 回答