Я могу видеть конструктор данных и экземпляров, скажем 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
?
Я не думаю, что вы можете поднять фактический код, потому что GHCi просто может не иметь к нему доступа. Что бы вы хотели увидеть точно? – jozefg
@jozefg, чтобы увидеть, как ребята haskell реализовали этот интерфейс? – thkang
Не только в GHCi, но и для локального поиска 'cabal get base' предоставит вам копию источников последней версии стандартных библиотек и поиск с помощью grep (строка 685 GHC/Base.hs для экземпляра« Alternative Maybe ») , Однако GHCi работает только с различными скомпилированными представлениями кода, и поэтому вам не будет очень повезло бы, если бы он печально напечатал исходный код. – jozefg