Справедливости ради, использование небольшого количества пробелов и установка некоторых промежуточных ступеней делает его очень легким для чтения. Я использовал 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 есть множество вспомогательных функций. Используй их! Они упрощают понимание основных принципов работы вашего кода без необходимости заглядывать во внутреннюю работу.