Справедливости ради, использование небольшого количества пробелов и установка некоторых промежуточных ступеней делает его очень легким для чтения. Я использовал Ramda для этого:

const dotProduct = R.pipe(
  R.zipWith(R.multiply),
  R.sum
);
const matMultiply = (A, B) => R.map(
  aRow => R.map(
    bCol => dotProduct(aRow, bCol),
    R.transpose(B)
  ),
  A
);

Урок таков: в большинстве библиотек FP есть множество вспомогательных функций. Используй их! Они упрощают понимание основных принципов работы вашего кода без необходимости заглядывать во внутреннюю работу.