and :: [Bool] -> Bool
-- testing 14 combinations of argument values
-- pruning with 37/47 rules
-- looking through 2 candidates of size 1
-- looking through 6 candidates of size 2
-- looking through 10 candidates of size 3
-- looking through 14 candidates of size 4
-- looking through 28 candidates of size 5
-- tested 38 candidates
and [] = True
and (p:ps) = p && and ps
or :: [Bool] -> Bool
-- testing 14 combinations of argument values
-- pruning with 37/47 rules
-- looking through 2 candidates of size 1
-- looking through 6 candidates of size 2
-- looking through 10 candidates of size 3
-- looking through 14 candidates of size 4
-- looking through 28 candidates of size 5
-- tested 35 candidates
or [] = False
or (p:ps) = p || or ps
and :: [Bool] -> Bool
-- testing 14 combinations of argument values
-- pruning with 40/50 rules
-- looking through 2 candidates of size 1
-- looking through 6 candidates of size 2
-- looking through 10 candidates of size 3
-- looking through 16 candidates of size 4
-- tested 24 candidates
and ps = foldr (&&) True ps
or :: [Bool] -> Bool
-- testing 14 combinations of argument values
-- pruning with 40/50 rules
-- looking through 2 candidates of size 1
-- looking through 6 candidates of size 2
-- looking through 10 candidates of size 3
-- looking through 16 candidates of size 4
-- tested 23 candidates
or ps = foldr (||) False ps