fst :: (A,A) -> A -- testing 4 combinations of argument values -- pruning with 0/0 rules -- 0 candidates of size 1 -- 2 candidates of size 2 -- tested 1 candidates fst (x,y) = x snd :: (A,A) -> A -- testing 4 combinations of argument values -- pruning with 0/0 rules -- 0 candidates of size 1 -- 2 candidates of size 2 -- tested 2 candidates snd (x,y) = y swap :: (A,A) -> (A,A) -- testing 4 combinations of argument values -- pruning with 10/10 rules -- 1 candidates of size 1 -- 0 candidates of size 2 -- 0 candidates of size 3 -- 4 candidates of size 4 -- tested 4 candidates swap (x,y) = (y,x) curry :: ((A,A) -> A) -> A -> A -> A -- pruning with 10/10 rules -- 2 candidates of size 1 -- 2 candidates of size 2 -- 2 candidates of size 3 -- 6 candidates of size 4 -- tested 8 candidates curry f x y = f (x,y) uncurry :: (A -> A -> A) -> (A,A) -> A -- pruning with 10/10 rules -- 0 candidates of size 1 -- 4 candidates of size 2 -- 0 candidates of size 3 -- 4 candidates of size 4 -- tested 6 candidates uncurry f (x,y) = f x y pairwise :: [A] -> [(A,A)] -- testing 3 combinations of argument values -- pruning with 10/10 rules -- 1 candidates of size 1 -- 0 candidates of size 2 -- 0 candidates of size 3 -- 0 candidates of size 4 -- 0 candidates of size 5 -- 0 candidates of size 6 -- 5 candidates of size 7 -- 11 candidates of size 8 -- 17 candidates of size 9 -- tested 32 candidates pairwise [] = [] pairwise (x:xs) = (x,head xs):pairwise (tail xs) catpairs :: [(A,A)] -> [A] -- testing 360 combinations of argument values -- pruning with 12/13 rules -- 1 candidates of size 1 -- 1 candidates of size 2 -- 1 candidates of size 3 -- 3 candidates of size 4 -- 5 candidates of size 5 -- 9 candidates of size 6 -- 17 candidates of size 7 -- 35 candidates of size 8 -- 72 candidates of size 9 -- tested 101 candidates catpairs [] = [] catpairs (xy:xys) = fst xy:snd xy:catpairs xys pairwise :: [A] -> [(A,A)] -- testing 3 combinations of argument values -- pruning with 10/10 rules -- 1 candidates of size 1 -- 0 candidates of size 2 -- 0 candidates of size 3 -- 0 candidates of size 4 -- 0 candidates of size 5 -- 0 candidates of size 6 -- 5 candidates of size 7 -- 14 candidates of size 8 -- tested 18 candidates pairwise [] = [] pairwise [x] = [] pairwise (x:y:xs) = (x,y):pairwise xs catpairs :: [(A,A)] -> [A] -- testing 360 combinations of argument values -- pruning with 12/13 rules -- 1 candidates of size 1 -- 1 candidates of size 2 -- 1 candidates of size 3 -- 3 candidates of size 4 -- 6 candidates of size 5 -- 12 candidates of size 6 -- 23 candidates of size 7 -- 48 candidates of size 8 -- tested 82 candidates catpairs [] = [] catpairs ((x,y):xys) = x:y:catpairs xys