Вы должны сделать то же самое, что и с другим языком программирования. Функции должны быть понятны. Обычно это означает, что если он длинный, поток управления невелик, в противном случае он разделяется на отдельные функции.
Таким образом, главное может выглядеть так:
main = do
inFH <- openFile ...
outFH <- openFile ....
mapM prcoessItem myList