在下面的代码中,第 4 行,我有一个表达式夹在 do 块中的两个 IO 操作之间:
1 doubleX :: (Show x, Num x) => x -> IO ()
2 doubleX x = do
3 putStrLn ("I will now double " ++ (show x))
4 let double = x * 2
5 putStrLn ("The result is " ++ (show double))
我将 do 表示法理解为使用 >>= 或 >> 将单子操作链接在一起。但是当你在两者之间有一个表达式时,它是如何工作的?您不能只使用 >> 将 3-5 行粘合在一起。