2016-03-17 3 views
2

Я могу видеть конструктор данных и экземпляров, скажем Maybe в GHCI:Как найти информацию о экземпляре в ghci?

Prelude Control.Applicative> :i Maybe 
data Maybe a = Nothing | Just a  -- Defined in `Data.Maybe' 
instance Eq a => Eq (Maybe a) -- Defined in `Data.Maybe' 
instance Monad Maybe -- Defined in `Data.Maybe' 
instance Functor Maybe -- Defined in `Data.Maybe' 
instance Ord a => Ord (Maybe a) -- Defined in `Data.Maybe' 
instance Read a => Read (Maybe a) -- Defined in `GHC.Read' 
instance Show a => Show (Maybe a) -- Defined in `GHC.Show' 
instance Applicative Maybe -- Defined in `Control.Applicative' 
instance Alternative Maybe -- Defined in `Control.Applicative' 

и я могу видеть, как Applicative класс типов определены в GHCI, тоже:

Prelude Control.Applicative> :i Applicative 
class Functor f => Applicative f where 
    pure :: a -> f a 
    (<*>) :: f (a -> b) -> f a -> f b 
    (*>) :: f a -> f b -> f b 
    (<*) :: f a -> f b -> f a 
    -- Defined in `Control.Applicative' 
instance Applicative [] -- Defined in `Control.Applicative' 
instance Applicative ZipList -- Defined in `Control.Applicative' 
instance Monad m => Applicative (WrappedMonad m) 
    -- Defined in `Control.Applicative' 
instance Applicative Maybe -- Defined in `Control.Applicative' 
instance Applicative IO -- Defined in `Control.Applicative' 
instance Applicative (Either e) -- Defined in `Control.Applicative' 
instance Applicative ((->) a) -- Defined in `Control.Applicative' 

, но как я могу найти информацию о конкретных случаях типа, скажем instance Alternative Maybe?

+1

Я не думаю, что вы можете поднять фактический код, потому что GHCi просто может не иметь к нему доступа. Что бы вы хотели увидеть точно? – jozefg

+0

@jozefg, чтобы увидеть, как ребята haskell реализовали этот интерфейс? – thkang

+0

Не только в GHCi, но и для локального поиска 'cabal get base' предоставит вам копию источников последней версии стандартных библиотек и поиск с помощью grep (строка 685 GHC/Base.hs для экземпляра« Alternative Maybe ») , Однако GHCi работает только с различными скомпилированными представлениями кода, и поэтому вам не будет очень повезло бы, если бы он печально напечатал исходный код. – jozefg

ответ

3

ghci не имеет команд, которые воспитывают базовый источник для функций и экземпляров, хотя он был бы аккуратным, если бы это произошло.

То, как я нахожу источник таких вещей, - найти их в хаке (для вещей в base, hoogle - это путь). Затем пикши include links to source from the documentation.

Смежные вопросы