Прежде всего, если у вас нет опыта работы с Haskell, я бы посоветовал вам прочитать хорошее введение, например
Оба доступны бесплатно.
Особенно важно, чтобы у вас в Haskell была разница между чистыми (например, вычислениями) и нечистыми (например, IO) вычислениями. Обращение с ними требует от вас иногда думать по-другому. Кроме того, Haskell ленив, и, следовательно, ваш код не может быть переведен простым изменением синтаксиса.
По остальным пунктам см. ответ Дона Стюарда.