Tom Pledger writes: | > diag = foldr (diag2 []) [[]] where | > diag2 zs (x:xs) ys = (zipWith (:) (x:zs) ys) ++ diag2 (x:zs) xs ys | > diag2 zs [] (_:ys) = (zipWith (:) zs ys) ++ diag2 zs [] ys | > diag2 _ _ _ = [] ... which hangs when given a mixture of empty and infinite lists. (Blush.) This is better behaved: > diag = foldr (diag2 []) [[]] where > diag2 [] [] _ = [] > diag2 _ _ [] = [] > diag2 zs (x:xs) ys = (zipWith (:) (x:zs) ys) ++ diag2 (x:zs) xs ys > diag2 zs [] (_:ys) = (zipWith (:) zs ys) ++ diag2 zs [] ys
- Deriving Enum Keith Wansbrough
- Re: Deriving Enum Keith Wansbrough
- RE: Deriving Enum Fermin Reig Galilea
- RE: Deriving Enum Fermin Reig Galilea
- Re: Deriving Enum Fergus Henderson
- Re: Deriving Enum Koen Claessen
- Re: Deriving Enum Wolfram Kahl
- RE: Deriving Enum Mark P Jones
- RE: Deriving Enum Tom Pledger
- RE: Deriving Enum Frank A. Christoph
- Re: Deriving Enum Tom Pledger
- Re: Deriving Enum Wolfram Kahl
- Re: Deriving Enum Jon . Fairbairn
- Re: Deriving Enum Wolfram Kahl
- Re: Deriving Enum Jon . Fairbairn
- Re: Deriving Enum Peter Hancock