Я был ленив и написал модуль Haskell (используя отличную среду EclipseFP) без предоставления подписей типа к моим функциям верхнего уровня.
EclipseFP использует HLint для автоматической маркировки каждой оскорбительной функции, и я могу исправить каждый из них с помощью четырех щелчков мыши. Эффективный, но утомительный.
Есть ли утилита, которая сканирует файл .hs и испускает измененную версию, которая добавляет сигнатуры типов к каждой функции верхнего уровня?
Пример:
./addTypeSignatures Foo.hs
будет читать файл Foo.hs
:
foo x = foo + a
и испускать
foo :: Num a => a -> a
foo x = x + 1
Бонусные очки, если инструмент автоматически редактирует Foo.hs
на месте и сохраняет резервную копию Foo.bak.hs