如何在绑定操作中使用非monadic函数

Sea*_*ess 4 monads haskell

我觉得我应该已经知道了这一点,但是如何fromMaybe在一行中使用而不是将其分成2行let

main = do
    maybePort <- lookupEnv "PORT"
    let port = fromMaybe "4020" maybePort
    putStrLn $ "Listening on:" ++ port
Run Code Online (Sandbox Code Playgroud)

Car*_*ten 8

你可以使用fmap<$>喜欢这个:

import Control.Applicative ((<$>))

main = do
    port <- fromMaybe "4020" <$> lookupEnv "PORT"
    putStrLn $ "Listening on:" ++ port
Run Code Online (Sandbox Code Playgroud)