mirror of
https://github.com/Noratrieb/idris-learning.git
synced 2026-01-14 21:15:02 +01:00
30 lines
897 B
Idris
30 lines
897 B
Idris
module Matrix
|
|
|
|
import Data.Vect
|
|
|
|
addMatrix : Num numType =>
|
|
Vect rows (Vect cols numType) ->
|
|
Vect rows (Vect cols numType) ->
|
|
Vect rows (Vect cols numType)
|
|
addMatrix = zipWith (zipWith (+))
|
|
|
|
multMatrix : Num numType =>
|
|
Vect n (Vect m numType) -> Vect m (Vect p numType) ->
|
|
Vect n (Vect p numType)
|
|
-- 😔
|
|
|
|
createEmpties : Vect n (Vect 0 elem)
|
|
createEmpties = replicate _ []
|
|
|
|
createEmpties2 : Vect n (Vect 0 elem)
|
|
createEmpties2 {n = Z} = []
|
|
createEmpties2 {n = (S k)} = [] :: createEmpties2
|
|
|
|
|
|
transHelper : (x : Vect n elem) -> (xsTrans : Vect n (Vect len elem)) -> Vect n (Vect (S len) elem)
|
|
transHelper = zipWith (\x, y => x :: y)
|
|
|
|
transposeMat : Vect m (Vect n elem) -> Vect n (Vect m elem)
|
|
transposeMat [] = createEmpties
|
|
transposeMat (x :: xs) = let xsTrans = transposeMat xs in
|
|
transHelper x xsTrans
|