On 2006-02-04 at 16:08EST Cale Gibbard wrote: > cartesian xs ys = map (\[x,y] -> (x,y)) $ sequence [xs,ys]
I'm lost. Isn't that just like cartesian xs ys = [(x,y)|x<-xs, y<-ys] ? Whereas... > On 04/02/06, Jan-Willem Maessen <[EMAIL PROTECTED]> wrote: > > > > On Feb 4, 2006, at 1:31 PM, Jon Fairbairn wrote: > > > ... > > > There ought to be a list_product somewhere (I mean [1..] > > > `list_product` [4..] == > > > [(1,4),(2,4),(1,5),(3,4),(2,5),(1,6),...]). Is there? > > > > Not that I know of, but here's one which handles finite lists > > correctly; it'd be a nice addition to Data.List: > > > > dzip :: [a] -> [b] -> [(a,b)] > > dzip = dzipWith (,) > > > > dzipWith :: (a -> b -> c) -> [a] -> [b] -> [c] > > dzipWith f [] ys = [] > > dzipWith f as [] = [] > > dzipWith f as (y:ys) = dzipK ys [y] > > where dzipK (b:bs) rbs = > > zipWith f as rbs ++ dzipK bs (b : rbs) > > dzipK [] rbs = dzipT as > > where dzipT ys@(_:yt) = zipWith f ys rbs ++ dzipT yt > > dzipT [] = [] > > > > -Jan-Willem Maessen ...does seem to work for infinite lists! -- Jón Fairbairn Jon.Fairbairn at cl.cam.ac.uk _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://haskell.org/mailman/listinfo/haskell-prime