作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为这个问题挠了一天。
我的代码中有一些函数如下所示:
function :: IO (Maybe Whatever)
function = do
monadFun
yaySomeIO
status <- maybeItWillFail
if checkStatus status -- Did we succeed?
then monadTime >>= return . Just . processItPurely
else return Nothing
myProgram.hs:94:16:
Unexpected semi-colons in conditional:
if checkStatus status; then monadTime >>= return . Just . processItPurely; else return Nothing
Perhaps you meant to use -XDoAndIfThenElse?
-XDoAndIfThenElse
选项是,我似乎无法在任何文档的任何地方找到它的踪迹。
case checkStatus status of
True -> monadTime >>= return . Just . processItPurely
_ -> return Nothing
最佳答案
缩进的“正确”方式if
-do
中的表达式-block 是缩进 else
和 then
比 if
更远的行, 像这样。
function = do
monadFun
yaySomeIO
status <- maybeItWillFail
if checkStatus status -- Did we succeed?
then monadTime >>= return . Just . processItPurely
else return Nothing
do
中缩进量相同的行 block 通常被视为单独的语句。
DoAndIfThenElse
的扩展名。这将允许您按照自己的方式编写它。此扩展在 Haskell 2010 中成为标准,这就是 GHC 默认启用它的原因。
.cabal
中提及它。文件或添加
{-# LANGUAGE DoAndIfThenElse #-}
到模块的顶部。
关于haskell - 条件句中的一元表达式 - GHC 编译,cabal 拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10867300/
快速提问。是否可以在条件句中评估除 bool(boolean) 型属性以外的其他内容? 例如,这有效 //elsewhere... myproperty = true {{#if mypropert
我是一名优秀的程序员,十分优秀!