horizontal loop combination
mean l = sum l / length l
mean l = s/n where (s,n) = sumLen l
sumLen  = (0,0) sumLen (x:xs) = (s+x, n+1) where (s,n) = sumLen xs
Another form of tupling transformation is used to avoid repeated evaluation where a function generates several identical calls to itself. By analysing the pattern of recursion (see descent function) it is possible to arrange for these identical calls to share results. E.g.
fib 0 = 1 fib 1 = 1 fib n = fib (n-1) + fib (n-2)
fib n = v where (_,v) = fibt n fibt 0 = (1,1) fibt n = (u+v,u) where (u,v) = fibt (n-1)