fun :: (Class a, Class b) => a -> b -> c fun :: (a, b, c) -> (a, b) fun :: (Class a, Class b) => a -> (# d, e #) -> c