VectorConstruction
Namespace: Deedle.Vectors
A "mini-DSL" that describes construction of a vector. Vector can be constructed
from various range operations (relocate, drop, slicing, appending), by combination
of two vectors or by taking a vector from a list of variables.
Notably, vectors can only be constructed from other vectors of the same type
(the Combine
operation requires this - even though that one could be made more general).
This is an intentional choice to make the representation simpler.
Logically, when we apply some index operation, we should get back a polymorphic vector
construction (\forall T. VectorConstruction<T>
) that can be applied to variuous
different vector types. That would mean adding some more types, so we just model vector
construction as an untyped operation and the typing is resquired by the Build
method
of the vector builder.
Union Cases
Union Case | Description |
Append(...)
Signature: VectorConstruction * VectorConstruction
|
Append two vectors after each other
|
AsyncCustomCommand(...)
Signature: VectorConstruction list * IVector list -> Async<IVector>
|
Same as CustomCommand with the difference that the resulting vector is returned
asynchronously (this is useful for lazy loading and it is used by AsyncBuild ).
|
Combine(...)
Signature: Lazy<int64> * VectorConstruction list * VectorListTransform
|
Combine N aligned vectors. The IVectorValueListTransform object
specifies how to merge values (in case there is a value at a given address
in more than one of the vectors).
|
CustomCommand(...)
Signature: VectorConstruction list * IVector list -> IVector
|
Apply a custom command to a vector - this can be used by special indices (e.g. index
for a lazy vector) to provide a custom operations to be used. The first parameter
is a list of sub-vectors to be combined (if as in e.g. Append ) and the
second argument is a function that will be called with evaluated vectors and is
supposed to create the new vector.
|
DropRange(...)
Signature: VectorConstruction * RangeRestriction<Address>
|
Drop the specified range of addresses from the vector
and return a new vector that excludes the range
|
Empty(int64)
Signature: int64
|
Creates an empty vector of the requested type and size
The returned vector is filled with missing values.
|
FillMissing(...)
Signature: VectorConstruction * VectorFillMissing
|
Create a vector that has missing values filled using the specified direction
(forward means that n-th value will contain (n-i)-th value where (n-i) is the
first index that contains a value).
|
GetRange(...)
Signature: VectorConstruction * RangeRestriction<Address>
|
Get the specified range of addresses from the vector and return it as a new vector
|
Relocate(...)
Signature: VectorConstruction * int64 * seq<Address * Address>
|
Reorders elements of the vector. Carries a new required vector length and a list
of relocations (each pair of addresses specifies that an element at a new address
should be filled with an element from an old address). The addresses may be out of
range!
|
Return(VectorHole)
Signature: VectorHole
|
When constructing vectors, we get an array of vectors to be used as "variables"
- this element represent getting one of the variables.
|