Matrix for working with sequence alignments. There's not much here yet.
Matrix[T] = object rows, cols: int data: seq[T]
proc `$`[T](m: Matrix[T]): string
proc `[]=`[T](m: var Matrix[T]; row, col: int; s: T)
proc `[]`[T](m: Matrix[T]; row, col: int): T
proc `[]`[T](m: var Matrix[T]; row, col: int): var T
proc cols[T](m: Matrix[T]): int
proc concat[T](matrices: varargs[Matrix[T]]): Matrix[T]
proc dim[T](m: Matrix[T]): (int, int)
proc newMatrix[T](rows, cols: int): Matrix[T]
proc newMatrix[T](rows, cols: int; data: seq[T]): Matrix[T]
proc rows[T](m: Matrix[T]): int
proc stack[T](matrices: varargs[Matrix[T]]): Matrix[T]
proc toString[T](m: Matrix[T]): string