Cabal-3.16.1.0: src/Distribution/Compat/SnocList.hs
-----------------------------------------------------------------------------
-- |
-- Module : Distribution.Compat.SnocList
-- License : BSD3
--
-- Maintainer : cabal-dev@haskell.org
-- Stability : experimental
-- Portability : portable
--
-- A very reversed list. Has efficient `snoc`
module Distribution.Compat.SnocList
( SnocList
, runSnocList
, snoc
) where
import Distribution.Compat.Prelude
import Prelude ()
newtype SnocList a = SnocList [a]
snoc :: SnocList a -> a -> SnocList a
snoc (SnocList xs) x = SnocList (x : xs)
runSnocList :: SnocList a -> [a]
runSnocList (SnocList xs) = reverse xs
instance Semigroup (SnocList a) where
SnocList xs <> SnocList ys = SnocList (ys <> xs)
instance Monoid (SnocList a) where
mempty = SnocList []
mappend = (<>)