Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/prelude/List/Transpose.hs

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


module List where

-- transpose is lazy in both rows and columns, and works for
--    non-rectangular 'matrices'
-- Note that [h | (h:t) <- xss] is not the same as (map head xss)
--    because the former discards empty sublists inside xss

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

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].