second :: [Int] -> Int -- testing 360 combinations of argument values -- pruning with 0/0 rules -- looking through 0 candidates of size 1 -- looking through 1 candidates of size 2 -- looking through 1 candidates of size 3 -- tested 2 candidates second xs = head (tail xs) third :: [Int] -> Int -- testing 360 combinations of argument values -- pruning with 0/0 rules -- looking through 0 candidates of size 1 -- looking through 1 candidates of size 2 -- looking through 1 candidates of size 3 -- looking through 1 candidates of size 4 -- tested 3 candidates third xs = head (tail (tail xs)) sum :: [Int] -> Int -- testing 360 combinations of argument values -- pruning with 14/25 rules -- looking through 2 candidates of size 1 -- looking through 4 candidates of size 2 -- looking through 3 candidates of size 3 -- looking through 13 candidates of size 4 -- looking through 14 candidates of size 5 -- tested 23 candidates sum [] = 0 sum (x:xs) = x + sum xs product :: [Int] -> Int -- testing 360 combinations of argument values -- pruning with 14/25 rules -- looking through 2 candidates of size 1 -- looking through 4 candidates of size 2 -- looking through 3 candidates of size 3 -- looking through 13 candidates of size 4 -- looking through 14 candidates of size 5 -- tested 33 candidates product [] = 1 product (x:xs) = x * product xs sum :: [Int] -> Int -- testing 360 combinations of argument values -- pruning with 15/26 rules -- looking through 2 candidates of size 1 -- looking through 4 candidates of size 2 -- looking through 3 candidates of size 3 -- looking through 16 candidates of size 4 -- tested 10 candidates sum xs = foldr (+) 0 xs product :: [Int] -> Int -- testing 360 combinations of argument values -- pruning with 15/26 rules -- looking through 2 candidates of size 1 -- looking through 4 candidates of size 2 -- looking through 3 candidates of size 3 -- looking through 16 candidates of size 4 -- tested 12 candidates product xs = foldr (*) 1 xs