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