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