(^^^) :: Int -> Int -> Int
-- testing 360 combinations of argument values
-- pruning with 56/91 rules
-- 4 candidates of size 1
-- 6 candidates of size 2
-- 10 candidates of size 3
-- tested 19 candidates
0 ^^^ x  =  x
x ^^^ 0  =  x
x ^^^ y  =  0

(^^^) :: Int -> Int -> Int
-- testing 360 combinations of argument values
-- pruning with 56/91 rules
-- 4 candidates of size 1
-- 0 candidates of size 2
-- 9 candidates of size 3
-- 0 candidates of size 4
-- 39 candidates of size 5
-- 60 candidates of size 6
-- 222 candidates of size 7
-- 996 candidates of size 8
-- 1266 candidates of size 9
-- 11700 candidates of size 10
-- tested 6683 candidates
x ^^^ y  =  if 0 == x * y
            then x + y
            else 0