On Wed, Nov 04, 2009 at 07:01:50PM +0100, Sjoerd Visscher wrote:
> To: Haskell Cafe
> From: Sjoerd Visscher
> Date: Wed, 4 Nov 2009 19:01:50 +0100
> Subject: Re: [Haskell-cafe] Fair diagonals (code golf)
>
> The code by Twan can be reduced to this:
>
> diagN = conca
The code by Twan can be reduced to this:
diagN = concat . foldr f [[[]]]
f :: [a] -> [[[a]]] -> [[[a]]]
f xs ys = foldr (g ys) [] xs
g :: [[[a]]] -> a -> [[[a]]] -> [[[a]]]
g ys x xs = merge (map (map (x:)) ys) ([] : xs)
merge :: [[a]] -> [[a]] -> [[a]]
merge [] ys = ys
merge xs [] = xs
merge