 genérico, ao chamar charName 'd' ocorre uma exceção:
-- *** Exception: ... Non-exhaustive patterns in function charName

-- Duas formas de fazer a correspondência de padrão com tuplas

addVectors1 :: (Num a) => (a, a) -> (a, a) -> (a, a)
addVectors1 a b = (fst a + fst b, snd a + snd b)

addVectors :: (Num a) => (
addVectors1 :: (Num a) => (a, a) -> (a, a) -> (a, a)
addVectors1 a b = (fst a + fst b, snd a + snd b)
addVectors1 a b = (fst a + fst b, snd a + snd b)