Vectors
Vectors are generic 1-dimensional arrays and an important basic type in Ginger. They are compact, fast to index and iterate over.
Classes & Constructors
Vector
UpdateableVector
DynamicVector
N.B. Dynamic vectors not yet implemented!
These are the classes associated with the three different flavours
of vector. The apply-action of the classes is the corresponding
constructor.
[ X1, …, Xn ] -> V
newVector( X1, … Xn ) -> V
Vector( X1, …, Xn ) -> V
Takes N items X1 to Xn and constructs a single immutable vector
V of length N with X1 to Xn as its members.
newDynamicVector( X1, …, Xn ) -> DV
DynamicVector( X1, …, Xn ) -> V
Takes N items X1 to Xn and constructs a single immutable vector
DV of length N with X1 to Xn as its members.
newUpdateableVector( X1, …, Xn ) -> UV
UpdateableVector( X1, …, Xn ) -> V
N.B. Updateable vectors not yet implemented!
Takes N items X1 to Xn and constructs a single updateable vector
UV of length N with X1 to Xn as its members.
Recognisers
- isVector( OBJECT ) -> BOOL
Returns true if OBJECT is a vector and immutable. Implies isImmutableObject( OBJECT ).
- isUpdateableVector( OBJECT ) -> BOOL
Returns true if OBJECT is a vector and updateable. Implies
isUpdateableObject( OBJECT ).
- isDynamicVector( OBJECT ) -> BOOL
N.B. Dynamic vectors not yet implemented!
Returns true if OBJECT is a vector and dynamic. Implies
isUpdateableObject( OBJECT ) and isDynamicObject( OBJECT ).
- isVectorLike( OBJECT ) -> BOOL
Returns true if OBJECT is a vector (immutable, updateable or dynamic),
otherwise false.
- isUpdateableVectorLike( OBJECT ) -> BOOL
Returns true if OBJECT is an updateable vector (updateable or dynamic),
otherwise false.
- isDynamicVectorLike( OBJECT ) -> BOOL
Returns true if OBJECT is a dynamic vector and (at the time of writing)
this is a synonym for isDynamicVector.
Accessors, Updaters and Exploders
explode( V ) -> ( X1, …, Xn )
explode( V ) <- ( X1, …, Xn )
explodeVector( N, V ) -> ( X1, …, Xn )
explodeVector( N, V ) <- ( X1, …, Xn )
N.B. Updaters not implemented yet.
Returns the members of a vector V. In update mode, batch updates
all the members of a vector. Updating only applies to updateable
and dynamic vectors.
V[ N ] -> Xn
V[ N ] <- X
V( N ) -> Xn
V( N ) <- X
indexVector( N, V ) -> Xn
indexVector( N, V ) <- Xn
index( N, V ) -> Xn
index( N, V ) <- X
N.B. Updaters not consistently implemented yet.
Returns the Nth member of any vector V. In update mode, it will replace
the Nth member of an updateable or dynamic vector with X. Attempting to
update an immutable vector will generate a failover.
Note that indexVector is the apply-action of vectors.
length( V ) -> N
lengthVector( V ) -> N
Returns the length of any vector.
Length is applicable to any
list-like object but lengthVector may only be applied to vectors.