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