{-# LANGUAGE CPP #-} module LLVM.IRBuilder.Internal.SnocList where import LLVM.Prelude newtype SnocList a = SnocList { SnocList a -> [a] unSnocList :: [a] } deriving (SnocList a -> SnocList a -> Bool (SnocList a -> SnocList a -> Bool) -> (SnocList a -> SnocList a -> Bool) -> Eq (SnocList a) forall a. Eq a => SnocList a -> SnocList a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: SnocList a -> SnocList a -> Bool $c/= :: forall a. Eq a => SnocList a -> SnocList a -> Bool == :: SnocList a -> SnocList a -> Bool $c== :: forall a. Eq a => SnocList a -> SnocList a -> Bool Eq, Int -> SnocList a -> ShowS [SnocList a] -> ShowS SnocList a -> String (Int -> SnocList a -> ShowS) -> (SnocList a -> String) -> ([SnocList a] -> ShowS) -> Show (SnocList a) forall a. Show a => Int -> SnocList a -> ShowS forall a. Show a => [SnocList a] -> ShowS forall a. Show a => SnocList a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [SnocList a] -> ShowS $cshowList :: forall a. Show a => [SnocList a] -> ShowS show :: SnocList a -> String $cshow :: forall a. Show a => SnocList a -> String showsPrec :: Int -> SnocList a -> ShowS $cshowsPrec :: forall a. Show a => Int -> SnocList a -> ShowS Show) instance Semigroup (SnocList a) where SnocList xs :: [a] xs <> :: SnocList a -> SnocList a -> SnocList a <> SnocList ys :: [a] ys = [a] -> SnocList a forall a. [a] -> SnocList a SnocList ([a] -> SnocList a) -> [a] -> SnocList a forall a b. (a -> b) -> a -> b $ [a] ys [a] -> [a] -> [a] forall a. [a] -> [a] -> [a] ++ [a] xs instance Monoid (SnocList a) where #if !(MIN_VERSION_base(4,11,0)) mappend = (<>) #endif mempty :: SnocList a mempty = [a] -> SnocList a forall a. [a] -> SnocList a SnocList [] snoc :: SnocList a -> a -> SnocList a snoc :: SnocList a -> a -> SnocList a snoc (SnocList xs :: [a] xs) x :: a x = [a] -> SnocList a forall a. [a] -> SnocList a SnocList ([a] -> SnocList a) -> [a] -> SnocList a forall a b. (a -> b) -> a -> b $ a x a -> [a] -> [a] forall a. a -> [a] -> [a] : [a] xs getSnocList :: SnocList a -> [a] getSnocList :: SnocList a -> [a] getSnocList = [a] -> [a] forall a. [a] -> [a] reverse ([a] -> [a]) -> (SnocList a -> [a]) -> SnocList a -> [a] forall b c a. (b -> c) -> (a -> b) -> a -> c . SnocList a -> [a] forall a. SnocList a -> [a] unSnocList