yam-app-0.1.4: src/Yam/Import.hs
module Yam.Import(
Text
, pack
, cs
, showText
, lift
, MonadIO
, liftIO
, when
, unless
, forM_
, void
, (<>)
, myThreadId
, ThreadId
, killThread
, fromMaybe
, maybe
, mapMaybe
, catMaybes
, selectMaybe
, finally
, MonadMask
, MonadThrow
, MonadCatch
, catchAll
, runReaderT
, ReaderT
, ask
, Generic
, UTCTime
, randomHex
, Proxy(..)
) where
import Control.Concurrent
import Control.Monad
import Control.Monad.Catch
import Control.Monad.IO.Class (MonadIO, liftIO)
import Control.Monad.Trans.Class
import Control.Monad.Trans.Reader (ReaderT, ask, runReaderT)
import Data.Maybe
import Data.Monoid ((<>))
import Data.Proxy
import Data.String.Conversions (cs)
import Data.Text (Text, pack)
import Data.Time.Clock
import GHC.Generics
import System.Random (newStdGen, randoms)
showText :: Show a => a -> Text
showText = cs . show
_hex = ['0'..'9'] <> ['a'..'f']
randomHex :: Int -> IO Text
randomHex n = (pack . map (go _hex 16) . take n . randoms) <$> newStdGen
where go gs l v = gs !! mod v l
selectMaybe :: [Maybe a] -> Maybe a
selectMaybe = listToMaybe . catMaybes