third :: [Int] -> Int
-- testing 360 combinations of argument values
-- pruning with 14/25 rules
-- 2 candidates of size 1
-- 1 candidates of size 2
-- 1 candidates of size 3
-- 4 candidates of size 4
-- tested 6 candidates
third xs  =  head (tail (tail xs))

product :: [Int] -> Int
-- testing 360 combinations of argument values
-- pruning with 14/25 rules
-- 2 candidates of size 1
-- 1 candidates of size 2
-- 1 candidates of size 3
-- 2 candidates of size 4
-- 10 candidates of size 5
-- tested 12 candidates
product []  =  1
product (x:xs)  =  x * product xs

product :: [Int] -> Int
-- testing 360 combinations of argument values
-- pruning with 15/26 rules
-- 2 candidates of size 1
-- 1 candidates of size 2
-- 1 candidates of size 3
-- 5 candidates of size 4
-- tested 8 candidates
product xs  =  foldr (*) 1 xs

