これ以上の日に頭を掻き回していました。条件文のMonadic式 - GHCコンパイル、キャバールの拒否
私は次のようになり、私のコードのいくつかの機能があります。
function :: IO (Maybe Whatever)
function = do
monadFun
yaySomeIO
status <- maybeItWillFail
if checkStatus status -- Did we succeed?
then monadTime >>= return . Just . processItPurely
else return Nothing
を
GHCiのロードおよび実行し、これを対話的に問題なく、そしてGHCは喜んでそれをコンパイルしますします。
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
オプションが何であれ、私はどこでも任意のドキュメントのそれの痕跡を見つけることができないよう: 徒党を介してこれを実行している、しかし、私はこれを提供します。 IT部門が最初に置いたセミコロンを使用していると私に怒鳴りを出すのはなぜカバルですか(それともこの時点でghcですか?)。あるいは、if-then-elseステートメントでモナド式を使用していますか?秘密結社がすべてでこの文句はありません
注:この除く
case checkStatus status of
True -> monadTime >>= return . Just . processItPurely
_ -> return Nothing
...
は地獄のように醜いと私は私のコードでこれを入れたいことはありませんでした。 誰も私に何が起こっているか教えてもらえますか?事前に感謝してください。
ありがとう、私はちょうど必要に応じてインデントを追加します! –