If you haven't seen it yet, the set module (clojure.set) provides a basic implementation of set relational algebra. May be useful for this work?
See clojure.org data structures and the source for clojure/set.clj in the clojure source. Rgds, Adrian. On Wed, May 6, 2009 at 7:05 PM, Anand Patil <anand.prabhakar.pa...@gmail.com> wrote: > 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 -~----------~----~----~----~------~----~------~--~---