Как найти сигнатуры типов нескольких импортированных методов в GHCI - PullRequest
4 голосов
/ 11 марта 2011

Я использую библиотеку, которую я загрузил в GHCI.

Из названий функций мне не очевидно, какую из них мне следует использовать; Я уверен, что он существует, и хочу увидеть список сигнатур типов доступных мне функций. Я не знаю, как это сделать.

  • Я могу получить список всех функций, экспортируемых библиотекой, введя имя модуля и используя завершение табуляции в GHCI.
  • Hoogle для меня бесполезен, потому что рассматриваемая библиотека не покрыта. Однако поиск в стиле Google был бы полезен.
  • Я знаю о :t GHCI, но кажется, что он работает только для одной функции, и я не хочу делать это для каждой отдельной функции, экспортируемой библиотекой.
  • Запуск grep -R :: ./* или аналогичный в исходном каталоге может опускать функции без явных сигнатур типов.
  • В библиотеке есть документация Haddock, но она насчитывает около 1000 функций, распределенных среди десятков подмодулей, и она утомительна и подвержена ошибкам при ручном поиске во всех них.

Я открыт, чтобы попробовать любой метод, но, очевидно, предпочитаю простой, переносимый и воспроизводимый

Есть ли способ найти сигнатуры типов всех экспортируемых функций в библиотеке? Или узнать, какие функции имеют сигнатуру типа, которая включает в себя определенный тип?

1 Ответ

5 голосов
/ 11 марта 2011

просто используйте :browse Module.Name, и вы увидите все значения, экспортируемые модулем:

> :browse Data.Tagged
newtype Tagged s b = Tagged {unTagged :: b}
asTaggedTypeOf :: s -> Tagged s b -> s
retag :: Tagged s b -> Tagged t b
tagSelf :: a -> Tagged a a
untag :: Tagged s b -> b
untagSelf :: Tagged a a -> a
...