Hi, This is mostly a question for Roman : how do you use your vector library with multi-dimensional arrays ? I mean, the array library from the standard libraries does something more intelligent than the C-like solution with indirections.
For instance, it allows you to program a single function that works for any dimensionality of the array. An example where it is useful ? Right : Some time ago I wrote a polynomial system solver for polynomials in Bernstein form. It needs to perform De Casteljau's algorithm to compute the coefficients of the restriction of its argument to a subinterval of [0,1]. The Ix thing (mainly the bounds function) allows for writing only one version of the function for any number of variables (ok, I needed to write another class to tell me there were n variables were when the index was a n-uple, and how to iterate over my data in some dimension between 0 and n-1). I know I could do it with vectors only by wrapping them in another type carrying the bounds information, but isn't there any more elegant way to do it ? Like an optional thing in the vector type, an alternative one, I don't know. Thanks, Pierre Some code example : instance Restrictable (Double,Double,Double,Double,Double,Double,Double,Double) (Int,Int,Int,Int,Int) where restriction (a,b,c,d,e,f,g,h) lower upper= let ((i0,i1,i2,i3,i4),(j0,j1,j2,j3,j4))=bounds lower dd=rangeSize (i4,j4) n0=rangeSize (i0,j0) n1=rangeSize (i1,j1) n2=rangeSize (i2,j2) n3=rangeSize (i3,j3) restr0=restrict 1 (n1*n2*n3) n0 dd a b coefs restr1=restrict n0 (n2*n3) n1 dd c d restr0 restr2=restrict (n0*n1) n3 n2 dd e f restr1 restr3=restrict (n0*n1*n2) 1 n3 dd g h restr2 in something Where restrict is written like : restrict bef aft nv dd a b coefs= let idx i j k d=((i*nv+j)*aft + k)*dd + d in something _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe