So a function of two variables, of types A and B is a function f :: (A,B) -> C. The Haskell idiom for the same thing, A -> B -> C as a function taking one argument and returning a function of a single variable; as well as the curry/uncurry procedure is tightly connected to this viewpoint, and will reemerge below, as well as when we talk about adjunctions later on.