- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Haskell的Text.JSON库使用一种称为Result的抽象数据类型,它基本上是Maybe的形式,但没有Nothing,而是Error String。任何人,我都需要使用liftIO将函数调用转换为在JSON.readJSON实现内部将IO事物返回到Result事物。我是monad变压器的新手,似乎无法实现Result的liftIO(根据ghci,我一直在尝试构造无限类型)。
有任何想法吗?
非常感谢
编辑
抱歉,我花了这么长时间才能详细说明!感谢您的帮助。
readJSON (JSObject obj) = do text <- getVal obj "text"
user <- getVal obj "from_user"
iden <- getVal obj "id_str"
url <- (do if (length.extractURLs) text == 0
then return ""
else return $ head $ extractURLs text)
title <- liftIO (getSiteTitle url)
return $
Tweet
NewsStory {
title = "Twitter",
desc = text,
url = url,
metric = 0,
sourceURL = "twitter.com/" ++ user ++ "/status/" ++ iden
}
最佳答案
您不能在readJSON内使用IO(不能使用unsafePerformIO)。当您有一堆底部带有IO的monad变压器时,将使用liftIO。也许,如果您提供有关要实现的目标的更具体的信息,您将能够获得更有用的答案:)
关于json - 为Text.JSON的Result类型编写一个liftIO实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4175589/
我有以下来自互联网的代码片段: calculateLength :: LengthMonad Int calculateLength = do -- all the IO operations h
我正在编写一个越来越大的管道,其中包含嵌套的 monad 转换。将每个 yield 或 await 调用lift 调用到基础 conduitM 中是一项繁琐的工作。更不用说每次我添加或撤消一层转换时,
在什么情况下应该使用liftIO?当我使用 ErrorT String IO 时,lift 函数会将 IO 操作提升到 ErrorT 中,因此 liftIO看来是多余的。 最佳答案 lift 始终从“
您好社区,感谢您抽出宝贵时间。 我有一个错误,我不确定错误是什么,但我认为问题是:ext-1.2.4.1:Data.Text.Internal.Lazy.Text IO)没有IO变压器至 Web.Sc
我先说我是一个新手 Haskell 程序员(这些年来偶尔会修改它)但是当谈到 OOO 和命令式编程时,我有几年的时间。我目前正在学习如何使用 monad 并通过使用 monad 转换器将它们组合起来(
我正在尝试获取一些在 ghc 7.0.4 和 7.4.1 中工作的代码。 在我看来,从 Snap mo 内部访问 IO 的旧方法不再进行类型检查。 在 ghc 7.0.4 中,记录了访问 IO 的方式
我是一名优秀的程序员,十分优秀!