[Haskell-cafe] Reasoning about performance

Richard A. O'Keefe ok at cs.otago.ac.nz
Wed Sep 4 03:48:01 CEST 2013

allPairs2 can be simplified using a trick I wouldn't dare use in
any language but Haskell:

triangle4 xs = fused undefined [] xs
  where fused x (y:ys) zs     = (x,y) : fused x ys zs
        fused _ []     (z:zs) = fused z zs zs
        fused _ []     []     = []

I submit this just for grins; it happens to be a touch faster but
not enough to bother about.

While the result _isn't_ all possible pairs of elements, making
the allPairs name a bit dodgy, it _does_ have O(|xs|**2) of them...

I would be surprised if the relative performance of two
approaches in ghci were always the same as their relative
performance in ghc.

More information about the Haskell-Cafe mailing list