- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下函数f
尝试通过使用IO(也许是Int)
函数两次来读取Int
两次,但是“短路” ”成功读取一个Int
后执行:
readInt :: IO (Maybe Int)
f :: IO (Maybe Int)
f = do
n1 <- readInt
case n1 of
Just n' -> return (Just n')
Nothing -> do
n2 <- readInt
case n2 of
Just n' -> return (Just n')
Nothing -> return Nothing
有没有好的方法来重构这段代码?如果我将其扩展到三次尝试,这将变得非常棘手......
(我的思考过程:看到这个“楼梯”告诉我也许我应该使用 Maybe
的 Monad
实例,但是因为它已经在 >IO
monad,那么我就必须使用 MaybeT
(?)。但是,我只需要 一个 的 readInt
来成功,所以 Maybe
monad 在第一个 Nothing
上出错的行为在这里是错误的......)
最佳答案
您可以使用 MaybeT
和 MonadPlus
实例来使用 msum
:
f :: MaybeT IO Int
f = msum [readInt, readInt, readInt]
关于haskell - 使用 “staircasing” 代码中的 `Maybe` 值重构 `IO`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28124844/
我遇到过一个使用楼梯分支的项目。澄清一下,这是代码分支用于开发的方法,当开发完成时,而不是切回主干/主线,dev 分支被指定为实时代码集,并从中取出一个新分支。这将无限期地继续下去。 我个人更喜欢削减
这个楼梯解决方案打印出正确的输出,但方向相反。知道如何更改此解决方案以获得所需的结果吗? import java.io.*; import java.math.*; import java.secur
以下函数f尝试通过使用IO(也许是Int)函数两次来读取Int两次,但是“短路” ”成功读取一个Int后执行: readInt :: IO (Maybe Int) f :: IO (Maybe Int
我在这个问题上花了好几个小时。我知道它与 float:left 和 display:inline-block 有关。我试过clearfix。而且它根本不起作用。 我什至删除了元素检查器中的所有文件。它
我遇到了两个动态规划问题。问题之一是 假设我一次可以跳 1、2 或 3 步,爬 n 步楼梯的可能方法的数量是多少? 解决这个问题的动态规划方法如下。 If C(n) is number of ways
我是一名优秀的程序员,十分优秀!