Вы хотите что-то сделать с каждым элементом списка, чтобы получить новый список. Другими словами, вы хотите применить функцию (которую вы должны будете определить самостоятельно) к каждому элементу. Для этого предназначена функция карты из Prelude.
Для преобразования между целыми числами и отдельными символами вы можете использовать функции chr и ord из модуля Data.Char.
Итак,
map (\i -> if i < 10 then chr (i + ord '0') else chr (i - 10 + ord 'a'))
- это функция типа [Int] -> String, которая делает то, что вы хотите (хотя проверка ошибок не включена).