packages feed

hans-2.1.0.0: src/Hans/Utils.hs

module Hans.Utils where

import Control.Monad (MonadPlus(mzero))
import Data.ByteString (ByteString)
import Numeric (showHex)

type DeviceName = String

type Packet = ByteString

type MkPseudoHeader = Int -> Packet

type Endo a = a -> a

-- | Discard the result of a monadic computation.
void :: Monad m => m a -> m ()
void m = m >> return ()

-- | Show a single hex number, padded with a leading 0.
showPaddedHex :: (Integral a) => a -> ShowS
showPaddedHex x
  | x < 0x10  = showChar '0' . base
  | otherwise = base
  where base = showHex x

-- | Lift a maybe into MonadPlus
just :: MonadPlus m => Maybe a -> m a
just  = maybe mzero return

-- | Make a singleton list.
singleton :: a -> [a]
singleton x = [x]