# StackAggregate SΒΆ

- S: Type

A stack is a bag where the last item inserted is the first item extracted.

- =: (%, %) -> Boolean if S has BasicType
- from BasicType
- ~=: (%, %) -> Boolean if S has BasicType
- from BasicType
- coerce: % -> OutputForm if S has CoercibleTo OutputForm
- from CoercibleTo OutputForm
- construct: List S -> %
- from Collection S
- convert: % -> InputForm if S has ConvertibleTo InputForm
- from ConvertibleTo InputForm
- copy: % -> %
- from Aggregate
- count: (S, %) -> NonNegativeInteger if S has BasicType
- from HomogeneousAggregate S
- empty: () -> %
- from Aggregate
- empty?: % -> Boolean
- from Aggregate
- eq?: (%, %) -> Boolean
- from Aggregate
- eval: (%, Equation S) -> % if S has Evalable S and S has SetCategory
- from Evalable S
- eval: (%, List Equation S) -> % if S has Evalable S and S has SetCategory
- from Evalable S
- eval: (%, List S, List S) -> % if S has Evalable S and S has SetCategory
- from InnerEvalable(S, S)
- eval: (%, S, S) -> % if S has Evalable S and S has SetCategory
- from InnerEvalable(S, S)
- extract!: % -> S
- from BagAggregate S
- find: (S -> Boolean, %) -> Union(S, failed)
- from Collection S
- hash: % -> SingleInteger if S has SetCategory
- from SetCategory
- hashUpdate!: (HashState, %) -> HashState if S has SetCategory
- from SetCategory
- insert!: (S, %) -> %
- from BagAggregate S
- inspect: % -> S
- from BagAggregate S
- latex: % -> String if S has SetCategory
- from SetCategory
- less?: (%, NonNegativeInteger) -> Boolean
- from Aggregate
- map: (S -> S, %) -> %
- from HomogeneousAggregate S
- member?: (S, %) -> Boolean if S has BasicType
- from HomogeneousAggregate S
- more?: (%, NonNegativeInteger) -> Boolean
- from Aggregate

- pop!: % -> S
`pop!(s)`

returns the top element`x`

, destructively removing`x`

from`s`

. Note: Use`top(s)`

to obtain`x`

without removing it from`s`

. Error: if`s`

is empty.

- push!: (S, %) -> S
`push!(x, s)`

pushes`x`

onto stack`s`

, i.e. destructively changing`s`

so as to have a new first (top) element`x`

. Afterwards, pop!(`s`

) produces`x`

and pop!(`s`

) produces the original`s`

.- reduce: ((S, S) -> S, %, S, S) -> S if S has BasicType
- from Collection S
- remove: (S, %) -> % if S has BasicType
- from Collection S
- removeDuplicates: % -> % if S has BasicType
- from Collection S
- sample: %
- from Aggregate
- size?: (%, NonNegativeInteger) -> Boolean
- from Aggregate

- top: % -> S
`top(s)`

returns the top element`x`

from`s`

;`s`

remains unchanged. Note: Use`pop!(s)`

to obtain`x`

and remove it from`s`

.

CoercibleTo OutputForm if S has CoercibleTo OutputForm

ConvertibleTo InputForm if S has ConvertibleTo InputForm

Evalable S if S has Evalable S and S has SetCategory

InnerEvalable(S, S) if S has Evalable S and S has SetCategory

SetCategory if S has SetCategory