data Woot
data Blah
f :: Woot -> Blah
f = undefined
g :: (Blah, Woot) -> (Blah, Blah)
g (b, w) = (b, b)
num1f :: Int -> String
num1f = undefined
num1g :: String -> Char
num1g = undefined
num1h :: Int -> Char
num1h x = g (f x)
data A
data B
data C
num2q :: A -> B
num2q = undefined
num2w :: B -> C
num2w = undefined
num2e :: A -> C
num2e a = num2w (num2q a)
data X
data Y
data Z
num3xz :: X -> Z
num3xz = undefined
num3yz :: Y -> Z
num3yz = undefined
num3xform :: (X, Y) -> (Z, Z)
num3xform (x, y) = (num3xz x, num3yz y)
num4unge :: (x -> y) -> (y -> (w, z)) -> x -> w
num4unge xToY yToWZ x = fst (yToWZ (xToY x))