stgi-1.1: Educational implementation of the STG (Spineless Tagless G-machine)

Safe HaskellNone
LanguageHaskell2010

Data.Stack

Description

A simple stack type. Very similar to an ordinary list, but with a more specialized API.

Synopsis

Documentation

data Stack a Source #

The usual stack data structure.

Constructors

Empty 
a :< (Stack a) 

Instances

Functor Stack Source # 

Methods

fmap :: (a -> b) -> Stack a -> Stack b #

(<$) :: a -> Stack b -> Stack a #

Foldable Stack Source # 

Methods

fold :: Monoid m => Stack m -> m #

foldMap :: Monoid m => (a -> m) -> Stack a -> m #

foldr :: (a -> b -> b) -> b -> Stack a -> b #

foldr' :: (a -> b -> b) -> b -> Stack a -> b #

foldl :: (b -> a -> b) -> b -> Stack a -> b #

foldl' :: (b -> a -> b) -> b -> Stack a -> b #

foldr1 :: (a -> a -> a) -> Stack a -> a #

foldl1 :: (a -> a -> a) -> Stack a -> a #

toList :: Stack a -> [a] #

null :: Stack a -> Bool #

length :: Stack a -> Int #

elem :: Eq a => a -> Stack a -> Bool #

maximum :: Ord a => Stack a -> a #

minimum :: Ord a => Stack a -> a #

sum :: Num a => Stack a -> a #

product :: Num a => Stack a -> a #

IsList (Stack a) Source # 

Associated Types

type Item (Stack a) :: * #

Methods

fromList :: [Item (Stack a)] -> Stack a #

fromListN :: Int -> [Item (Stack a)] -> Stack a #

toList :: Stack a -> [Item (Stack a)] #

Eq a => Eq (Stack a) Source # 

Methods

(==) :: Stack a -> Stack a -> Bool #

(/=) :: Stack a -> Stack a -> Bool #

Ord a => Ord (Stack a) Source # 

Methods

compare :: Stack a -> Stack a -> Ordering #

(<) :: Stack a -> Stack a -> Bool #

(<=) :: Stack a -> Stack a -> Bool #

(>) :: Stack a -> Stack a -> Bool #

(>=) :: Stack a -> Stack a -> Bool #

max :: Stack a -> Stack a -> Stack a #

min :: Stack a -> Stack a -> Stack a #

Show a => Show (Stack a) Source # 

Methods

showsPrec :: Int -> Stack a -> ShowS #

show :: Stack a -> String #

showList :: [Stack a] -> ShowS #

Semigroup (Stack a) Source # 

Methods

(<>) :: Stack a -> Stack a -> Stack a #

sconcat :: NonEmpty (Stack a) -> Stack a #

stimes :: Integral b => b -> Stack a -> Stack a #

Monoid (Stack a) Source # 

Methods

mempty :: Stack a #

mappend :: Stack a -> Stack a -> Stack a #

mconcat :: [Stack a] -> Stack a #

Pretty a => Pretty (Stack a) Source # 

Methods

pretty :: Stack a -> Doc #

prettyList :: [Stack a] -> Doc #

NFData a => NFData (Stack a) Source # 

Methods

rnf :: Stack a -> () #

type Item (Stack a) Source # 
type Item (Stack a) = a

forEachPop :: [x] -> Stack a -> Maybe ([a], Stack a) Source #

For each list element, pop one element off the Stack. Fail if not enough elements are present.

(<>>) :: [a] -> Stack a -> Stack a Source #

Push a list of items onto the stack. The first item will be at the top of the stack.

span :: (a -> Bool) -> Stack a -> (Stack a, Stack a) Source #

Like span for lists.