main :: IO ()
main = do
結果 <- function_returns_io_maybe --結果的型別是 Maybe x。
--如果結果也許是Just,則運行回傳IO()與結果的函式,否則不運行函式。
如何在IO函式中使用Maybe?
uj5u.com熱心網友回復:
你可以在do塊中寫任何運算式,只要運算式具有該塊的正確單體型別。特別是,你可以做案例分析:
main = do
結果 <- 東西
case result of
Just r -> somethingElse r
Nothing -> return ()
(where something :: IO (Maybe X); somethingElse :: X -> IO ())
就個人而言,我會用lambda case和bind來寫:
main = something >>= case
Just r -> somethingElse r
Nothing -> return ()
關于Maybe的案例分析用maybe組合器更簡潔地書寫:
main = maybe somethingElse (return ()) =<< something
而Control.Monad.Extra.whenJustM捕獲了這整個操作的種類:
importControl.Monad.Extra (whenJustM)
main = whenJustM something somethingElse
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/329817.html
標籤:
