Potential space leak in transpose

Andreas Abel andreas.abel at ifi.lmu.de
Tue May 12 09:11:30 UTC 2020


 > I don't know how much that'll cost in practice.

What costs are you worried about?

On 2020-05-12 00:08, David Feuer wrote:
> In Data.List, we define
> 
> transpose :: [[a]] -> [[a]]
> transpose [] = []
> transpose ([] : xss) = transpose xss
> transpose ((x : xs) : xss) = (x : [h | (h : _) <- xss]) : transpose (xs 
> : [t | (_ : t) <- xss])
> 
> The potential difficulty is that we essentially mapMaybe over the xss 
> list twice in the third case. So we hang on to the heads where we need 
> the tails and the tails where we need the heads. We could fix that with 
> something like this:
> 
> transpose ((x : xs) : xss) = (x : fronts) : transpose (xs : rears)
>    where
>      (fronts, rears) = unzip [(h,t) | (h : t) <- xss]
> 
> I don't know how much that'll cost in practice.
> 
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
> 


More information about the Libraries mailing list