1. Распарсить пурскрипт официальным парсером, перевести в свою астшку, которая примерно union(PS AST, HS AST), применить кучку синтаксических трансформаций, преттипринтнуть.
2. Рекорды заменить либо на data, если можно, либо на superrecord-подобную либу, если нельзя. Либа поддерживает O(1) запросы, красивый record construction, полиморфные апдейты, и имеет кастомный Generic инстанс, который мимикрирует под обычные рекорды — т.е. ToJSON и так далее работают из коробки. Все record accessors всюду заменить на generic-lens.
3. Переписать всю используемую PS-экосистему на HS.
4. -XStrict и -fno-full-laziness всюду