packages feed

interlude-l-0.1.0.1: src/Interlude.hs

{-# LANGUAGE UndecidableInstances, MultiParamTypeClasses, FlexibleInstances, FlexibleContexts #-}
module Interlude ( module X, unsafeTail, unsafeHead, unsafeLast, unsafeInit
                 , PShow(..), perror ) where

import qualified Prelude
import Protolude as X hiding ( (&), catch, throw, try, (<.>), wait, error, filter, ordNub
                             , catMaybes, mapMaybe )
import Prelude as X (error)
import Control.Monad.Catch as X (MonadThrow, MonadCatch, catch, throwM, try)
import Control.Monad.State as X (modify')
import Control.Lens.Operators as X
import Control.Lens.TH as X
import Control.Lens as X (view)
import Data.Aeson.TH as X
import Data.Aeson as X (ToJSON, FromJSON)
import Data.Typeable as X (Typeable)
import Data.Coerce as X
import Data.Char as X
import Data.Witherable as X
import Data.String

unsafeTail :: [a] -> [a]
unsafeTail = Prelude.tail

unsafeHead :: [a] -> a
unsafeHead = Prelude.head

unsafeLast :: [a] -> a
unsafeLast = Prelude.last

unsafeInit :: [a] -> [a]
unsafeInit = Prelude.init

class Prelude.Show a => PShow a stringLike where
    pshow :: a -> stringLike

instance (Prelude.Show a, IsString stringLike) => PShow a stringLike where
    pshow = fromString . show

perror :: StringConv stringLike String => stringLike -> a
perror = error . toS