let print_gType (g: gType) = match g with
Basic(b) -> "Basic(" ^ (print_bType b) ^ ")"
| Vector(n,b) -> "Vector(" ^ (string_of_int n) ^ "," ^ (print_bType b) ^ ")"
| Matrix(n,m,b) -> "Matrix(" ^ (string_of_int n) ^ "," ^ (string_of_int n) ^ "," ^ (print_bType b) ^ ")"