    [NAME]
    ALL.dao.type.array

    [TITLE]
    Multi-dimensional Numeric Array

    [DESCRIPTION]

    Multi-dimentional numeric array is supported by Dao as array type.

     0.1  Definition

       1  # Elements Enumeration:
       2  VectorEnumeration  ::= '[' ExpressionList ']'
       3  MatrixEnumeration  ::= '[' ExpressionList { ';' ExpressionList } ']'
       4  VectorEnumeration2 ::= 'array' '{' ExpressionList '}'
       5  MatrixEnumeration2 ::= 'array' '{' ExpressionList { ';' ExpressionList } '}'
       6
       7  # Elements of Arithmetic Progression sequence: count ~ start [ ~ step ]
       8  ArrayByArithProg  ::= '[' Expression ':' [ Expression ':' ] Expression ']'
       9  ArrayByArithProg2 ::= 'array' '{' Expression ':' [ Expression ':' ] Expression '}'
      10
      11  Array ::= VectorEnumeration | MatrixEnumeration | ArrayByArithProg
      12            | VectorEnumeration2 | MatrixEnumeration2 | ArrayByArithProg2

    Please note that VectorEnumeration or VectorEnumeration2 can still create a matrix or a
    multi-dimensional array, if the ExpressionList produces a list of arrays.

    Four numeric types are supported by the array type: int, float, double and complex. When
    an array is created by enumeration without explicit type declaration, its numeric type is
    inferred from the first expression of the expression list, if the enumeration is not
    empty; otherwise, float will be used as the numeric type.

    Dao supports a number of built-in operations for array. For arithmetic operations, they
    are always supported element-wise operations.

     0.2  Examples

       1  vec1 = [1, 2, 3]  # array<int> vector, or 1x3 matrix;
       2  vec2 = [1.0; 2; 3]  # array<float> 3x1 matrix, or transposed vector;
       3  mat1 = [1D, 2; 3, 4]  # array<double> 2x2 matrix;
       4  mat2 = [ [1, 2], [3, 4] ]  # 2x2 matrix
       5  mat3 = [ [1, 2, 3] : 5 ]   # 5x3 matrix;
       6  mat4 = array{ 1, 2; 3, 4 }  # 2x2 matrix

    [STRUCTURE]

    dao.type.array--| dao.type.array: Multi-dimensional Numeric Array (3.3 KB)
                    |--method--| dao.type.array.method: Array methods (1.3 KB)
                               |--dim----| dao.type.array.method.dim: Array method dim() (0.0 KB)
                               |--index--| dao.type.array.method.index: Array method index() (0.0 KB)