Congrats on your first program!

For cleanliness: lose the semicolons. Use the new hierarchical module names instead ( Data.List , Data.Char ). Add type signatures. As you get more comfortable with function composition, eta contract your function definitions (remove rightmost arguments). e.g.

nubl :: [String] -> [String] nubl = nub . map (map toLower)

If you want to be really rigorous, use explicit import lists:

import Data.List (nub) import Data.Char (toLower)