sum :: [Int] -> Int -- testing 3 combinations of argument values -- pruning with 4/8 rules -- looking through 1 candidates of size 1 -- looking through 2 candidates of size 2 -- looking through 3 candidates of size 3 -- looking through 4 candidates of size 4 -- looking through 7 candidates of size 5 sum [] = 0 sum (x:xs) = x + sum xs (++) :: [Int] -> [Int] -> [Int] -- testing 3 combinations of argument values -- pruning with 3/3 rules -- looking through 2 candidates of size 1 -- looking through 4 candidates of size 2 -- looking through 10 candidates of size 3 -- looking through 28 candidates of size 4 -- looking through 78 candidates of size 5 -- looking through 172 candidates of size 6 [] ++ xs = xs (x:xs) ++ ys = x:(xs ++ ys)