Try:
    
    
    type
      Vector = ref object
        value: array[2, float64]
      
      Matrix = ref object
        value: array[2, Vector]
      
      IX = range[0..1]
    
    proc newVector(): Vector =
      new(result)
    
    proc newMatrix(): Matrix =
      new(result)
      for ix in 0 .. 1:
        result.value[ix] = newVector()
    
    proc `[]=`(v: Vector, i: IX, value: float64) =
      v.value[i] = value
    
    proc `[]`(v: Vector, i: IX): float64 =
      v.value[i]
    
    proc `[]`(m: Matrix, i: IX): Vector =
      m.value[i]
    
    let m = newMatrix()
    
    m[0][0] = 1.0
    echo "m[0][0] = ", m[0][0]
    
    GC_fullCollect()
    
    m[0][0] = 2.0
    echo "m[0][0] = ", m[0][0]
    

Reply via email to