Am Samstag 18 April 2009 00:31:50 schrieb Martijn van Steenbergen:
> Hi Daniel,
>
> I love your solution. Very elegant.
>
> Daniel Fischer wrote:
> > sortedProducts xs ys = foldr merge1 [] [map (*x) ys | x <- xs]
> >
> > merge1 (x:xs) ys = x:merge xs ys
> > merge1 [] ys = ys
> >
> > merge xs@(x:xt) ys@(y:yt)
> >
> >     | x < y    = x:merge xt ys
> >     | otherwise = y:merge xs yt
> >
> > (or remove duplicates, if you wish)
>
> Small addition: if you want this to run on finite input as well, add
>
> this case:
>  > merge xs ys = xs ++ ys

Argh! When typing the foldr, I thought I mustn't forget the case for an empty 
list in 
merge1 and merge. Well, at least I remembered half of it :(

>
> Martijn.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to