Skip to content

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?
Clone this wiki locally