- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在什么情况下应该使用liftIO
?当我使用 ErrorT String IO
时,lift
函数会将 IO 操作提升到 ErrorT
中,因此 liftIO
看来是多余的。
最佳答案
lift
始终从“上一层”提升。如果您需要从第二层提升,则需要 lift 。电梯
等等。
另一方面,liftIO
始终从 IO 层提升(如果存在,则始终位于堆栈的底部)。因此,如果您有 2 层以上的 monad,您将会欣赏 liftIO
。
比较以下 lambda 中的参数类型:
type T = ReaderT Int (WriterT String IO) Bool
> :t \x -> (lift x :: T)
\x -> (lift x :: T) :: WriterT String IO Bool -> T
> :t \x -> (liftIO x :: T)
\x -> (liftIO x :: T) :: IO Bool -> T
关于Haskell:lift 与 liftIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921237/
我有以下来自互联网的代码片段: 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 的方式
我是一名优秀的程序员,十分优秀!