On 5/11/05, Jerzy Karczmarczuk <[EMAIL PROTECTED]> wrote:
Give me one single language where [3-d arrays are] natural and immediate.
I don't know how Matlab does it, but I find the C++ standard library vector<vector<vector<float> > > entirely intuitive (apart, perhaps, for the need for those two spaces)!
Let's precise what I consider to be important in order to call it natural
and immediate. And, in general, useful.
1. The definition of a concrete object, not just its type, but, say,
the initialization with constants. Or/and, global initialization with
zeros.
2. Easy synthesis of multi-dim matrices out of "planes", of submatrices
of lesser dimensions;
it can be an 'overlay', like, say, making a colour image out of three
R/G/B planes, or making a 3D surfaces, or aking tensors through
external products.
3. Easy indexing, and not only A[i][j][k], etc., but slicing, the extraction
of sub-dimensional matrices, e.g., one column vector out of a 2D matrix
in Matlab: A(3,:). Also, extracting parts (e.g. sub-images).
Also, in mathematical context, "intelligent" indexing, e.g. treating
a matrix as implicitly anti-symmetric. Here the CAS systems as Maple
or Mathematica provide the adequate tools. C++ of course doesn't,
unless you overload [] yourself.
4. Readable iterators, perhaps something more compact than insipid do-loops.
5. If those matrices are used as mathematical objects: tensors, etc.,
I want to have some simple notation for inner multiplications/
contractions, etc. This is not just the syntax problem, but the
existence of good libraries as well...
6. Reshaping of those arrays. I thought that Matlab 'reshape' (or something
similar in Numeric Python) is a baroque, rarely used construction. Now
I use it quite often...
So, plenty of things. That's why this is not so trivial...
Jerzy Karczmarczuk
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe