clojure only matrix implementation