有沒有辦法在ghci中查看特定類型的Typeclass定義?在ghci中查看特定類型的定義
例如,Maybe
定義是這樣的:
instance Functor Maybe where
fmap f (Just x) = Just (f x)
fmap f Nothing = Nothing
我可以看到這個在ghci中?
的時候,我在ghci中使用:info
,我得到這個:
Prelude> :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'
在上面的輸出,我想看看它是如何在Data.Maybe定義爲實例Functor
。無論如何看到在ghci?
在您自己的機器上運行hoogle相當簡單('cabal install; hoogle data')。 – aavogt
@aavogt:對,但命令行搜索不會給你很好的鏈接,像在線版本的黑線鱈。將它用作本地服務器並不那麼簡單。 – leftaroundabout
爲了搜索'data Double'和它的實現,比如說'+'符合'Num',這個方法仍然沒有提供一種查看源代碼的方法。 hoogle中的'Maybe'示例提供了一個與源代碼的鏈接,但是一般來說它並不是。 – ely