我有一个函数可以返回IO (Map.Map String Double)
,我需要Map.Map String Double
,而不需要IO。
我尝试这样做,但它失败了:不在范围内:数据构造函数`IO'。
extractIO (IO (a)) = a
答案 0 :(得分:12)
你不能只打开IO,这就是IO的全部要点。
如果您有一个IO(Map.Map String Double),并且您想要处理该事物,则必须在monadic上下文中进行,即
stuff :: IO ()
stuff = do
map <- theThingThatReturnsYourIOMap
theThingThatNeedsYourUnwrappedMap map
如果你更详细地解释你想做什么,我们可以给你一个更详细的答案。
答案 1 :(得分:1)