Я использую Haskell 2010.1.0.0.1 с GHC 6. Ввод :t
в приглашении GHCi, за которым следует имя функции, показывает нам тип функции. Есть ли способ просмотреть определение функции?
Как просмотреть определение функции в Haskell/GHCi?
Ответ 1
В настоящее время нет.
Ближайшая команда к тому, что вы хотите, :info
: имя информации...
Отображает информацию об имени (именах). Например, если имя является классом, тогда будут напечатаны методы класса и их типы; если имя является конструктором типа, тогда его определение будет напечатано; если имя является функцией, то его тип будет напечатан. Если имя было загружено из исходного файла, тогда GHCi также отобразит местоположение его определения в источнике.
Для типов и классов GHCi также суммирует экземпляры, которые упоминают их. Чтобы избежать появления нерелевантной информации, экземпляр отображается только в том случае, если (а) его глава упоминает имя и (б) все другие вещи, упомянутые в экземпляре, находятся в области (либо квалифицированной, либо иной) в результате: нагрузки или: команды модуля.
так:
Prelude> :info ($)
($) :: (a -> b) -> a -> b -- Defined in GHC.Base
infixr 0 $
Однако вы можете увидеть источник для идентификаторов, сгенерированных инструментом пикши, в Hackage.
Обратите внимание, что "? src" является допустимой командой в lambdabot, на IRC-канале #haskell и делает то, что вы ожидаете.
> ?src ($)
> f $ x = f x
Ответ 2
Нет, не может этого сделать. Некоторые забавные вещи, которые вы, начинающий Haskell, можете сделать:
- В документах HTML-документов HTML нажмите "источник"... изучите источник.
-
:browse
, чтобы найти все определения, экспортированные модулем - Используйте
:help
для очевидного результата - используйте веб-интерфейс hoogle для поиска функций или установки локального хоста!
- Profit!
Ответ 3
Я так не думаю. Вы можете использовать :i
для получения немного дополнительной информации (более полезной для инфиксных операторов и построений данных и т.д.), Но не для определения:
ghci> :i repeat
repeat :: a -> [a] -- Defined in GHC.List
Вы можете использовать hoogle, чтобы быстро найти документацию для стандартной библиотечной функции, которая справа имеет ссылку, чтобы перейти к источник. Это все еще несколько щелчков, хотя.