Могу ли я получать предупреждения о чрезмерно ограничительных сигнатурах типов? - PullRequest
12 голосов
/ 03 апреля 2012

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

1 Ответ

7 голосов
/ 03 апреля 2012

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

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

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

...