map(Module,Module,List) -- create a matrix by giving a sparse or dense list of entries

Description

The list v is either a doubly nested list of ring elements, or a list of elements (i,j) => f. The first version provides all of the elements of the output matrix, row by row. The second form provides only the non-zero elements of the output matrix h: h_(i,j) = f, for every (i,j) => f in the list v.

In each case, the modules M and N should have the same base ring R, and the ring elements appearing in v should be over R, or over a base ring of R.

In the first form, each list in v gives a row of the matrix. The length of the list v should be the number of generators of M, and the length of each element of v (which is itself a list of ring elements) should be the number of generators of the source module N.

 `i1 : R = ZZ/101[x,y,z];` ```i2 : p = map(R^2,R^{-2,-2,0},{{x^2,0,3},{0,y^2,5}}) o2 = | x2 0 3 | | 0 y2 5 | 2 3 o2 : Matrix R <--- R``` ```i3 : isHomogeneous p o3 = true```
In the second form, if an index (i,j) occurs more than once, only the last is taken.
 ```i4 : p = map(R^2,R^3,{(0,0) => x+y, (1,1) => x^2, (0,2) => x-1, (0,0) => x-y}) o4 = | x-y 0 x-1 | | 0 x2 0 | 2 3 o4 : Matrix R <--- R```