单独使用 (_ <- 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
.
查看此 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
.