Matrix transposition: Difference between revisions

m
Improved clojure section with sample output
m (fixed unclosed tag)
m (Improved clojure section with sample output)
Line 585:
 
=={{header|Clojure}}==
{{trans|Common Lisp}}
<lang lisp>;takes matrix represented as nested lists
(defn transpose [m]
(apply map list m))
 
<lang lisp>
;takes matrix represented as nested vectors
(defndefmulti matrix-transpose [m]
"Switch rows with columns."
(vec (apply map vector m)))</lang>
class)
 
(defmethod matrix-transpose clojure.lang.PersistentList [m]
<lang lisp>; takes both representations (and can be extended)
[mtx]
(defmulti transpose class)
(apply map list mmtx))
(defmethod transpose clojure.lang.PersistentList [m]
 
(apply map list m))
(defmethod matrix-transpose clojure.lang.PersistentVector [m]
[mtx]
(vec (apply map vector m)))
(vec (apply map vector mmtx)))</lang>
</lang>
 
Sample output:
 
<lang lisp>
=> (matrix-transpose [[1 2 3] [4 5 6]])
[[1 4] [2 5] [3 6]]
</lang>
 
Line 609 ⟶ 614:
<pre>
> transpose [[1,2,3],[4,5,6]]
 
[[1,4],[2,5],[3,6]]
</pre>
Anonymous user