fun main(x: [n][m]int, y: [m][p]int): [n][p]int = map (fn xr => map (fn yc => reduce (+) 0 (zipWith (*) xr yc)) (transpose y)) x