{-# LANGUAGE CPP #-} module LLVM.IRBuilder.Internal.SnocList where import LLVM.Prelude newtype SnocList a = SnocList { forall a. 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 $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 /= :: 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 $cshowsPrec :: forall a. Show a => Int -> SnocList a -> ShowS showsPrec :: Int -> SnocList a -> ShowS $cshow :: forall a. Show a => SnocList a -> String show :: SnocList a -> String $cshowList :: forall a. Show a => [SnocList a] -> ShowS showList :: [SnocList a] -> ShowS Show) instance Semigroup (SnocList a) where SnocList [a] xs <> :: SnocList a -> SnocList a -> SnocList a <> SnocList [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 :: forall a. SnocList a -> a -> SnocList a snoc (SnocList [a] xs) 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 :: forall a. 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