import Data.List (transpose)
-- Data.List transpose :: [[a]] -> [[a]]
-- The name itself docent matter
type Tri = [[Integer]] -- Initialize with a concrete type since Haskell doesn't support Impredicative polymorphism
trimult :: Tri -> Tri -> Tri
trimult xss yss = (zipWith (map . dp) :: Tri -> [Tri] -> Tri)
(xss :: Tri)
(submats ((transpose yss) :: Tri) :: [Tri])
submats :: Tri -> [Tri]
submats = undefined
dp :: Num a => [a] -> [a] -> a
dp = undefined