19 lines
413 B
Haskell
19 lines
413 B
Haskell
multiply :: Num a => [[a]] -> [[a]] -> [[a]]
|
|
multiply us vs = map (mult [] vs) us
|
|
where
|
|
mult xs [] _ = xs
|
|
mult xs _ [] = xs
|
|
mult [] (zs : zss) (y : ys) = mult (map (y *) zs) zss ys
|
|
mult xs (zs : zss) (y : ys) =
|
|
mult
|
|
(zipWith (\u v -> u + v * y) xs zs)
|
|
zss
|
|
ys
|
|
|
|
main :: IO ()
|
|
main =
|
|
mapM_ print $
|
|
multiply
|
|
[[1, 2], [3, 4]]
|
|
[[-3, -8, 3], [-2, 1, 4]]
|