Daniel Fischer schrieb: > Am Mittwoch 02 Dezember 2009 18:54:51 schrieb Christian Maeder: >> Daniel Fischer schrieb: >>> However, according to a couple of tests, the "funkyName" version is >>> somewhat faster and allocates less. >> My timing tests showed that your fpairs version is fastest.
Interesting. Using a faster version of "sequence": http://www.haskell.org/pipermail/haskell-cafe/2009-November/069491.html \begin{code} allPossibilities :: [[a]] -> [[a]] allPossibilities [] = [[]] allPossibilities (l:ls) = [ x : xs | x <- l, xs <- allPossibilities ls] funkyName :: (a -> b -> Bool) -> [a] -> [b] -> [[(a, b)]] funkyName p s l = case s of h : t -> [(h, a) : ys | a <- filter (p h) l, ys <- funkyName p t l] [] -> [[]] fpairs :: (a -> b -> Bool) -> [a] -> [b] -> [[(a, b)]] fpairs p s l = allPossibilities [[(a, b) | b <- filter (p a) l] | a <- s] \end{code} fpairs and funkyName are about equally fast. Cheers Christian _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
