(f: A-> C) (g: b -> D) -> A*B -> C*D