2016-05-13 6 views
0

Mit Blick auf diesem ZeroMQ HelloWorldClient.hs Code-Schnipsel:Verwenden von (_ <- f) anstelle von f Alone?

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

Gibt es einen Grund, warum _ <- receive requester als receive requester nicht geschrieben werden würde?

Gibt es im Allgemeinen auch einen Grund, _ <- f (wo f : Monad m => m a) statt f zu verwenden?

Antwort

8

Das ist eine gebräuchliche Art, Warnungen zum Wegwerfen eines Werts zu unterdrücken, wenn Sie etwas vom Typ m a haben, wobei a nicht () ist. Ein anderer gebräuchlicher Weg ist dies mit .

+0

Könnten Sie bitte erklären, wie leer würde verwendet werden, je Ihre Erwähnung davon? –

+0

@KevinMeredith 'void (Request Requester)' oder bequemer 'void $ receive requester' – chi