apelsin-1.2.1: src/Monad2.hs
module Monad2 where
import Control.Monad
import Network.Socket
import Control.Exception
import Control.Applicative
import Data.Maybe
whileTrue :: Monad m => m Bool -> m ()
whileTrue f = f >>= \t -> when t (whileTrue f)
whenJust :: Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust x f = case x of
Nothing -> return ()
Just a -> f a
whenM :: Monad m => m Bool -> m () -> m ()
whenM c m = c >>= \t -> when t m
unlessM :: Monad m => m Bool -> m () -> m ()
unlessM c m = c >>= \t -> when (not t) m
getDNS :: String -> String -> IO (Maybe SockAddr)
getDNS host port = handle (\(_ :: IOException) -> return Nothing) $
fmap addrAddress . listToMaybe <$> getAddrInfo Nothing (Just host) (Just port)