单独使用 (_ <- f) 而不是 f ?

Using (_ <- f) instead of f Alone?

查看此 ZeroMQ HelloWorldClient.hs 代码片段:

forM_ [1..10] $ \i -> do
    liftIO . putStrLn $ "Sending Hello " ++ show i ++ "…"
    send requester [] "Hello"
    _ <- receive requester
    liftIO . putStrLn $ "Received World " ++ show i

为什么 _ <- receive requester 不会写成 receive requester

此外,一般来说,是否有任何理由使用 _ <- f(其中 f : Monad m => m a)而不是 f

当您有 m a 类型的东西,其中 a 不是 () 时,这是消除有关丢弃值的警告的常用方法。另一种常见的方法是使用 void.