Где я могу найти исходный код пакетов/модулей?

Я хотел бы посмотреть на код функций, определенных в модулях, таких как Data.List или Data.Map.

Я могу импортировать модуль Data.List с

import Data.List

и тогда я могу использовать функции nub или sort.

Я хотел бы знать, где я могу найти эти функции, чтобы посмотреть их код.

В какой каталог устанавливаются модули по умолчанию?

PS: Windows 8.1, я установил платформу Haskell.


person Community    schedule 19.08.2017    source источник


Ответы (2)


Этот каталог содержит скомпилированные модули, поэтому вы не сможете прочитать там исходный код.

Что вы можете сделать, так это найти свою функцию в онлайн-документация, а затем нажмите "Источник" справа.

person arrowd    schedule 19.08.2017
comment
Где я могу найти каталог со скомпилированными модулями? - person ; 19.08.2017
comment
Обычно это зависит от того, какую систему вы используете и какой инструмент вы использовали для их создания. stack размещайте данные, например, в STACK_ROOT и ~/.stack/snapshots. - person arrowd; 19.08.2017
comment
Моя установка использует cabal в Windows 8.1. Я пытался использовать поиск Windows по некоторым ключевым словам, но не получил никакого результата. - person ; 19.08.2017
comment
клика установить в /Users/user/.cabal, IIRC. - person arrowd; 19.08.2017

Как отмечает @arrowd в своем ответе,

Этот каталог содержит скомпилированные модули, поэтому вы не сможете прочитать там исходный код.

репозиторий GHCее зеркало Github) можно просмотреть напрямую, но есть более простой способ:

  1. Используйте Hoogle или Stackage, чтобы найти пакет, в котором находится модуль/функция

    Обратите внимание, что Hoogle и Стек чувствителен к регистру. (Лучше всего искать модули по именам, написанным с заглавной буквы.)

    Запрос sort в Hoogle дает список, аналогичный приведенному ниже. Stackage имеет немного другой стиль, но основы те же (главным образом потому, что он использует Hoogle для поиска). Зеленые строки под заголовками результатов показывают имена содержащих

    (1) упаковка(и) (в маленьких крышках) и

    (2) модуль(и) (с большой буквы).

    Может быть несколько функций с одним и тем же именем, но имя модуля и пакета помогает выбрать правильную.

    Поиск в Google

  2. Нажмите на название функции/модуля

  3. Нажмите "#Источник"

    Поиск взлома

person toraritte    schedule 16.11.2018