List is a dense Indexed Collection backed by a JavaScript array.
List shares its peformance charactersitics with array too. get, set,
push, and pop are all O(1) on lists. shift and unshift are O(n).
Map is a Keyed Collection of [key, value] tuples with
O(1) get and set. Its API is fully compatible with that of
JavaScript Map,
but the Sequins Map class delegates to a native Map for storage as
opposed to extending the native Map class.
Set is a Duplicated Collection of unique values with O(1) add and has.
Its API is fully compatible with that of
JavaScript Set,
but the Sequins Set class delegates to a native Set for storage as
opposed to extending the native Set class.
An IndexedSequence is quite simply an Indexed Sequence. It represents
sequential transformations against Array or List-like data as a series of
chained function calls. The chain of calls will usually be terminated with
toList.
A KeyedSequence is, as expected, a Keyed Sequence. It represents
sequential transformations on Object or Map-like data as a series of
chained function calls. Note that a KeyedSequence lacks the key-coalescing
property of a Map. Duplicate keys will be eliminated when calling as(Map)
which will usually be the last call in the chain.
A SetSequence is a Duplicated Sequence. It represents sequntial
transformations on Set-like data as a series of chained function calls.
Note that a SetSequence is allowed to contain duplicate values. Such
duplicates will be eliminated when using as(Set) or a similar method to
convert back to a concrete type after the desired transformations are
made.
Seq is a helper function for creating instances of Sequence. Given any argument,
Seq will make a best-effort guess as to the appropriate Sequence subtype, and
will return an instance of it. The desired Sequence type can be selected by using
one of the nested functions: Seq.Indexed, Seq.Keyed, or Seq.Set.
Concretes are a type of Collection which store their own data
and have O(1) random access. It is the base class for List, Map, and
Set.
Sequence is the abstract base class for describing efficient, lazy
transformations. Sequences never store their own data, instead they
describe how to compute values (or keys) using a series of transforms against
some source data. Sequences are immutable with regards to which transforms
they apply, but as their source data is mutable applying the sequence
transformations more than once may yield different results if the source data
has changed. Sequence subtypes are IndexedSequence, KeyedSequence,
and SetSequence.
Collection is the base type for all Sequins structures. There are two
fundamental Collection types: Concrete and Sequence. The distinction is that
a Concrete stores its data, while a Sequence computes it.
Furthermore, all Collections have keys and values of some kind. Values are
similar everywhere, but the nature of keys is determined by the Collection's
subtype. Key may be explicitly declared ( Keyed subtype), the index of the
item in the collection ( Indexed subtype), or just the value again as a
placeholder ( Duplicated subtype).
Keyed is used to describe Collections which have explicit keys and values.
Callbacks for methods in classes implementing Keyed will receive
(value, key) as thier first two arguments.
Indexed is used to describe Collections of values where the collections
also track the indexes of those values. Callbacks for methods in classes
implementing Indexed will receive (value, index) as their first two
arguments.
Duplicated describes collections of values where no index is desired.
Instead, callbacks for methods in classes implementing Duplicated will
receive (value, value) as their first two arguments, which is the source
of the name.
Returns a IndexedSequence of numbers from start (inclusive) to end
(exclusive), by step, where start defaults to 0, step to 1, and end to
infinity. When start is equal to end, returns empty range.
Returns a IndexedSequence of value repeated times times. When times is
not defined, returns an infinite Sequence of value.
True if maybeCollection is a Collection, or any of its subclasses.
True if maybeKeyed is a Keyed, or any of its subclasses.
True if maybeIndexed is an Indexed, or any of its subclasses.
True if maybeAssociative is either a Keyed or Indexed Collection.
True if maybeSeq is a Sequence.
True if maybeList is a List.
True if maybeMap is a Map.
True if maybeSet is a Set.
Returns the value within the provided collection associated with the provided key, or notSetValue if the key is not defined in the collection.
Returns true if the key is defined in the provided collection.
Removes the key at value
Sets key to value
Gets the keys of a Collection, Object, or Array.
Gets the value of a Collection, Object, or Array.
Gets the entries of a Collection, Object, or Array.