Ответ 1
Нет, это невозможно - не только для случаев, но и для чего угодно. GHC регистрирует только скомпилированную версию пакета, поэтому исходный код вообще не будет доступен для ghci.
Вероятно, чаще всего вы будете использовать материал из Hackage; в этом случае очень просто найти исходный код таких экземпляров, просмотрев модуль, найдя объявление класса или данных и нажав на источник.
Если у вас нет доступа в Интернет или какой-либо другой причины, по которой вы не можете подключиться к Интернету онлайн, сначала вам нужно узнать, в какой пакет включен модуль. Самый простой способ сделать это:
$ ghc-pkg find-module Data.Maybe
/usr/local/haskell/lib/ghc-7.6.2/package.conf.d
база-4.6.0.1
haskell2010-1.1.1.0
~/.ghc/x86_64-линукс-7.6.2/package.conf.d
Затем, как я уже сказал, GHC не знает, где находится исходный код этих пакетов - на самом деле он может быть даже недоступен в вашей системе! Но если вы установили пакет (или тот, который зависит от него) с cabal install
, он будет там по умолчанию в ~/.cabal/packages/hackage.haskell.org/PᴀᴄᴋᴀɢᴇNᴀᴍᴇ
(как сжатый архив, но это не большой барьер). В папке проекта пакета вы можете просто найти модуль через структуру каталогов, которая представляет иерархию модулей.
Другие пакеты, например, ваш пример Data.Maybe
(package haskell2010
), возможно, приступили к установке GHC, например платформы Haskell. В этом случае я считаю, что проще всего искать там файл документации Haddock. В моем случае,
$ find/usr/local/haskell -name 'Data-Maybe.html' | глава -n1 | xargs firefox
Это откроет эквивалент того, на что ссылается hoogle (но на вашем локальном HD), где вы также можете просматривать исходный код удобным для пользователя способом.