[Haskell-cafe] Why is the the transpose function in Data.List more complicated?

KC kc1956 at gmail.com
Sat Aug 4 01:34:41 CEST 2012


Transpose in Data.List is the following:

transpose               :: [[a]] -> [[a]]
transpose []             = []
transpose ([]   : xss)   = transpose xss
transpose ((x:xs) : xss) = (x : [h | (h:_) <- xss]) : transpose (xs :
[ t | (_:t) <- xss])


Yet this seems to work.

transp :: [[b]] -> [[b]]
transp ([]:_)   = []
transp rows     = map head rows : transp (map tail rows)


Why is the the transpose function in Data.List more complicated?

--
--
Regards,
KC



More information about the Haskell-Cafe mailing list