-- | $(binaryT n) returns the appropriate TBinary instance
binaryT :: Integral a => a -> TypeQ
binaryT n = case n of
    0  -> f
    -1 -> t
    n  -> appT (if (n `mod` 2) == 0 then o else i) $ binaryT $ n `div` 2

-- | $(binaryE n) returns an undefined value of the appropriate TBinary instance
binaryT :: Integral a => a -> TypeQ
binaryT n = case n of
    0  -> f
    -1 -> t
    n  -> appT (if (n `mod` 2) == 0 then o else i) $ binaryT $ n `div` 2

-- | $(binaryE n) returns an undefined value of the appropriate TBinary instance
binaryT n = case n of
    0  -> f
    -1 -> t
    n  -> appT (if (n `mod` 2) == 0 then o else i) $ binaryT $ n `div` 2

-- | $(binaryE n) returns an undefined value of the appropriate TBinary instance