DoublyLinkedAggregate(S)
aggcat.spad line 1251
[edit on github]
A doubly-linked aggregate serves as a model for a doubly-linked list, that is, a list which has links to both next and previous nodes and thus can be efficiently traversed in both directions.
- # : % -> NonNegativeInteger if % has finiteAggregate
- from Aggregate
- = : (%, %) -> Boolean if S has BasicType and % has finiteAggregate or S has SetCategory
- from BasicType
- any? : (Mapping(Boolean, S), %) -> Boolean if % has finiteAggregate
- from HomogeneousAggregate(S)
- child? : (%, %) -> Boolean if S has BasicType
- from RecursiveAggregate(S)
- children : % -> List(%)
- from RecursiveAggregate(S)
- coerce : % -> OutputForm if S has CoercibleTo(OutputForm)
- from CoercibleTo(OutputForm)
- concat! : (%, %) -> % if % has shallowlyMutable
concat!(u, v)
destructively concatenates doubly-linked aggregate v
to the end of doubly-linked aggregate u
.
- copy : % -> %
- from Aggregate
- count : (S, %) -> NonNegativeInteger if S has BasicType and % has finiteAggregate
- from HomogeneousAggregate(S)
- count : (Mapping(Boolean, S), %) -> NonNegativeInteger if % has finiteAggregate
- from HomogeneousAggregate(S)
- cyclic? : % -> Boolean
- from RecursiveAggregate(S)
- distance : (%, %) -> Integer
- from RecursiveAggregate(S)
- elt : (%, "value") -> S
- from RecursiveAggregate(S)
- empty : () -> %
- from Aggregate
- empty? : % -> Boolean
- from Aggregate
- eq? : (%, %) -> Boolean
- from Aggregate
- eval : (%, S, S) -> % if S has Evalable(S) and S has SetCategory
- from InnerEvalable(S, S)
- eval : (%, 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 : (%, List(Equation(S))) -> % if S has Evalable(S) and S has SetCategory
- from Evalable(S)
- every? : (Mapping(Boolean, S), %) -> Boolean if % has finiteAggregate
- from HomogeneousAggregate(S)
- head : % -> %
head(l)
returns the first element of a doubly-linked aggregate l
. Error: if l
is empty.
- last : % -> S
last(l)
returns the last element of a doubly-linked aggregate l
. Error: if l
is empty.
- latex : % -> String if S has SetCategory
- from SetCategory
- leaf? : % -> Boolean
- from RecursiveAggregate(S)
- leaves : % -> List(S)
- from RecursiveAggregate(S)
- less? : (%, NonNegativeInteger) -> Boolean
- from Aggregate
- map : (Mapping(S, S), %) -> %
- from HomogeneousAggregate(S)
- map! : (Mapping(S, S), %) -> % if % has shallowlyMutable
- from HomogeneousAggregate(S)
- max : % -> S if S has OrderedSet and % has finiteAggregate
- from HomogeneousAggregate(S)
- max : (Mapping(Boolean, S, S), %) -> S if % has finiteAggregate
- from HomogeneousAggregate(S)
- member? : (S, %) -> Boolean if S has BasicType and % has finiteAggregate
- from HomogeneousAggregate(S)
- members : % -> List(S) if % has finiteAggregate
- from HomogeneousAggregate(S)
- min : % -> S if S has OrderedSet and % has finiteAggregate
- from HomogeneousAggregate(S)
- more? : (%, NonNegativeInteger) -> Boolean
- from Aggregate
- next : % -> %
next(l)
returns the doubly-linked aggregate beginning with its next element. Error: if l
has no next element. Note: next(l) = rest(l)
and previous(next(l)) = l
.
- node? : (%, %) -> Boolean if S has BasicType
- from RecursiveAggregate(S)
- nodes : % -> List(%)
- from RecursiveAggregate(S)
- parts : % -> List(S) if % has finiteAggregate
- from HomogeneousAggregate(S)
- previous : % -> %
previous(l)
returns the doubly-link list beginning with its previous element. Error: if l
has no previous element. Note: next(previous(l)) = l
.
- sample : () -> %
- from Aggregate
- setchildren! : (%, List(%)) -> % if % has shallowlyMutable
- from RecursiveAggregate(S)
- setelt! : (%, "value", S) -> S if % has shallowlyMutable
- from RecursiveAggregate(S)
- setnext! : (%, %) -> % if % has shallowlyMutable
setnext!(u, v)
destructively sets the next node of doubly-linked aggregate u
to v
, returning v
.
- setprevious! : (%, %) -> % if % has shallowlyMutable
setprevious!(u, v)
destructively sets the previous node of doubly-linked aggregate u
to v
, returning v
.
- setvalue! : (%, S) -> S if % has shallowlyMutable
- from RecursiveAggregate(S)
- size? : (%, NonNegativeInteger) -> Boolean
- from Aggregate
- tail : % -> %
tail(l)
returns the doubly-linked aggregate l
starting at its second element. Error: if l
is empty.
- value : % -> S
- from RecursiveAggregate(S)
- ~= : (%, %) -> Boolean if S has BasicType and % has finiteAggregate or S has SetCategory
- from BasicType
BasicType
RecursiveAggregate(S)
CoercibleTo(OutputForm)
HomogeneousAggregate(S)
SetCategory
Evalable(S)
Aggregate
InnerEvalable(S, S)