Подтвердить что ты не робот

Могу ли я получать предупреждения о чрезмерно ограничивающих подписях?

Может ли GHC или какой-нибудь инструмент lint сказать мне, когда я предоставил сигнатуру типа для функции, которая может быть более полиморфной?

4b9b3361

Ответ 1

GHC этого не делает, и быстрый поиск Hackage ничего не вызывает.

Простым, но, возможно, довольно эффективным способом реализации такой вещи было бы загрузить модуль в GHCi, использовать :browse для получения всех подписей типа, затем загрузить копию без каких-либо подписей типа, использовать :browse снова, и сравнить два выхода; затем просто распечатайте все строки, которые отличаются вне круглых скобок, пробелов и альфа-переименования. Однако это не сработает отлично, особенно если у вас есть определения, типы которых не могут быть выведены.

У меня такое чувство, что такой инструмент на практике проявит много ложных срабатываний.