-
Notifications
You must be signed in to change notification settings - Fork 29
Common Clojure matrix interface
mikera edited this page Jan 2, 2013
·
1 revision
Concept
Create a common interface for Matrix / Vector maths in Clojure, inspired by NumPy and with the following objectives:
- Provide a common API / abstraction for people wanting to do matrix maths / computations in Clojure
- Provide standard matrix / vector functionality so that other Clojure libraries don't need to "reinvent the wheel"
- Support multiple underlying implementations (e.g. JBLAS, Vectorz, Parallel Colt, EJML, basic matrices implemented with Clojure vectors etc.)
Design thoughts
- Protocols are possibly the best approach to get polymorphism over underlying implementations
- Should support functional programming style (i.e. non-destructive matrix computations)
- Maybe should support optional mutability, if underlying implementation allows it? (see vectorz-clj for example of this approach)
- Should support majority of common vector / matrix functions.
- Need to think about possibility for users to access underlying implementation directly, if they need a feature not exposed in common interface?
Important projects / potential downstream consumers of the API
- Incanter
- 3D libraries?