On Sat, May 2, 2009 at 11:19 PM, aperotte <apero...@gmail.com> wrote:

>
> Hello everyone,
>
> I just uploaded some of my work on a new datatype for clojure to a git
> repository.
>
> http://github.com/aperotte/persistentmatrix
>
> A bit of the rationale and motivation for the datatype is described on
> the github page.  I basically wanted to create a datastructure for
> manipulating large amounts of data efficiently and in a human friendly
> way in clojure.
>
> Its main features are:
>
>   1. Immutability
>   2. Primitive Support
>   3. N-Dimensional – Arbitrary number and size of dimensions (ie.
> ability to create a 4×3×5x6 datastructure)
>   4. N-Dimensional units (ie. ability to create a 10×10 matrix with
> 2×1 units to represent complex numbers)
>   5. Fast submatrix views via structural sharing (ie. constant time
> slicing, transposing, and other data manipulations)
>   6. Maintenance of both deep and superficial dimensionality (ie.
> slicing a 4×3×5x6 along the 3rd dimension will yield a datastructure
> with a superficial dimensionality of 3 and a deep dimensionality of 4)
>   7. Axis and element labeling and label indexing (ie. ability to
> label axes and elements of an axis with strings or any arbitrary
> object)
>   8. Implementing many of the clojure interfaces and thereby
> automatically inheriting much of the functionality of the standard
> library for data structures.
>
> I would welcome any feedback.  Also, if anyone is interested in
> working together to accelerate its development, that would be welcome
> too!


Great work! I'm glad to see some numerical advances in Clojure.

I've got a couple of suggestions: first, you might want to follow numpy and
call n-dimensional arrays 'arrays', and reserve 'matrix' for 2d arrays. Or
not...

Second, immutability is definitely the right default, but it would be nice
to be able to create nonstandard arrays from Clojure somehow. For example,
say I wanted to compute the matrix (f (- x y)) over the Cartesian product of
vectors x and y.

Anand

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to