module Lib.Prelude
( module Exports,
both,
showBS,
toStrictBS,
fromStrictBS,
lastMay,
)
where
import Control.Monad.Trans.Maybe as Exports (MaybeT (..), runMaybeT)
import qualified Data.ByteString.Lazy as LB
import Data.Time as Exports
( UTCTime (..),
diffUTCTime,
)
import UnliftIO as Exports
( Handler,
catch,
catches,
throwIO,
try,
)
both :: (a -> b) -> (a, a) -> (b, b)
both :: (a -> b) -> (a, a) -> (b, b)
both a -> b
f (a
a, a
b) = (a -> b
f a
a, a -> b
f a
b)
showBS :: Show a => a -> ByteString
showBS :: a -> ByteString
showBS a
a = Text -> ByteString
forall a b. ConvertUtf8 a b => a -> b
encodeUtf8 (a -> Text
forall b a. (Show a, IsString b) => a -> b
show a
a :: Text)
toStrictBS :: LByteString -> ByteString
toStrictBS :: LByteString -> ByteString
toStrictBS = LByteString -> ByteString
LB.toStrict
fromStrictBS :: ByteString -> LByteString
fromStrictBS :: ByteString -> LByteString
fromStrictBS = ByteString -> LByteString
LB.fromStrict
lastMay :: [a] -> Maybe a
lastMay :: [a] -> Maybe a
lastMay [a]
a = NonEmpty a -> a
forall (f :: * -> *) a. IsNonEmpty f a a "last" => f a -> a
last (NonEmpty a -> a) -> Maybe (NonEmpty a) -> Maybe a
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [a] -> Maybe (NonEmpty a)
forall a. [a] -> Maybe (NonEmpty a)
nonEmpty [a]
a