2 added 39 characters in body
source | link

Husk, 77 6 bytes

mMoΣz*TmMδṁ*T

Please note the argument order, try it online!try it online!

-1 byte thanks to @Zgarb!

Explanation

Basically just doing what the definition of matrix-multiplication sais:

mM(Σz*)TmMδṁ*T  -- takes arguments in reverse order, eg: [[1],[0],[-1]] [[1,2,3],[4,5,6]]
       T  -- transpose the first argument: [[1,0,-1]] [[1,2,3],[4,5,6]]
m         -- map the following function (example element [1,0,-1])
 M(   )   --   map the following function applied to [1,0,-1] (example element [1,2,3])
    z*δṁ    --     zipaccumulate undera multiplication:sum [1,0,of element-3]wise..
   Σ  *    --     sum..multiplication: -2
          -- [[-2],[-2]]

Husk, 7 bytes

mMoΣz*T

Please note the argument order, try it online!

Explanation

Basically just doing what the definition of matrix-multiplication sais:

mM(Σz*)T  -- takes arguments in reverse order, eg: [[1],[0],[-1]] [[1,2,3],[4,5,6]]
       T  -- transpose the first argument: [[1,0,-1]] [[1,2,3],[4,5,6]]
m         -- map the following function (example element [1,0,-1])
 M(   )   --   map the following function applied to [1,0,-1] (example element [1,2,3])
    z*    --     zip under multiplication: [1,0,-3]
   Σ      --     sum: -2
          -- [[-2],[-2]]

Husk, 7 6 bytes

mMδṁ*T

Please note the argument order, try it online!

-1 byte thanks to @Zgarb!

Explanation

Basically just doing what the definition of matrix-multiplication sais:

mMδṁ*T  -- takes arguments in reverse order, eg: [[1],[0],[-1]] [[1,2,3],[4,5,6]]
     T  -- transpose the first argument: [[1,0,-1]] [[1,2,3],[4,5,6]]
m       -- map the following function (example element [1,0,-1])
 M      --   map the following function applied to [1,0,-1] (example element [1,2,3])
  δṁ    --     accumulate a sum of element-wise..
    *    --    ..multiplication: -2
          -- [[-2],[-2]]
1
source | link

Husk, 7 bytes

mMoΣz*T

Please note the argument order, try it online!

Explanation

Basically just doing what the definition of matrix-multiplication sais:

mM(Σz*)T  -- takes arguments in reverse order, eg: [[1],[0],[-1]] [[1,2,3],[4,5,6]]
       T  -- transpose the first argument: [[1,0,-1]] [[1,2,3],[4,5,6]]
m         -- map the following function (example element [1,0,-1])
 M(   )   --   map the following function applied to [1,0,-1] (example element [1,2,3])
    z*    --     zip under multiplication: [1,0,-3]
   Σ      --     sum: -2
          -- [[-2],[-2]]