这里有两个非常简单的函数f和g.
{-# LANGUAGE ScopedTypeVariables #-}
module Test where
import Control.Applicative
f :: IO ()
f = do
y <- (<*>) (pure (show . (*10))) (read <$> readFile "data")
writeFile "out" y
g :: IO ()
g = do
y <- (readFile "data" >>= return . show . (*10) . read)
writeFile "out" y
读取和写入的文件*10以和f的应用样式写入。读取和写入的文件以monadic 样式写入,带有. (我故意避免使用in来强调下面的问题)。pure(<*>)*10g>>=liftMg
f和之间的语义区别是什么g?或者在这种情况下,它只是一种风格选择吗?