sfOffice :: ([Char], [Char]) -> [Char] sfOffice name = if surname < "L" then nameText ++ " - PO Box 1234 - San Francisco, CA, 94111" else nameText ++ " - PO Box 1010 - San Francisco, CA, 94109" where surname = snd name nameText = fst name ++ " " ++ surname nyOffice :: ([Char], [Char]) -> [Char] nyOffice name = nameText ++ ": PO Box 789 - New York, NY, 10013" where nameText = fst name ++ " " ++ snd name renoOffice :: (a, [Char]) -> [Char] renoOffice name = nameText ++ " - PO Box 456 - Reno, NV 89523" where nameText = snd name wdcOFfice :: ([Char], [Char]) -> [Char] wdcOFfice name = nameText ++ " - PO BOX 831 - Washington, DC, 12130" where nameText = fst name ++ " " ++ snd name ++ ", Esq." getLocation :: [Char] -> ([Char], [Char]) -> [Char] getLocation location = case location of "ny" -> nyOffice "sf" -> sfOffice "reno" -> renoOffice "wdc" -> wdcOFfice _ -> (\name -> fst name ++ " " ++ snd name) addressLetter :: ([Char], [Char]) -> [Char] -> [Char] addressLetter name location = locationFunction name where locationFunction = getLocation location