Có cách nào để xem định nghĩa Typeclass trong ghci cho một loại cụ thể không?Xem định nghĩa Typeclass trong ghci cho một kiểu cụ thể
Ví dụ, Maybe
được định nghĩa như thế này:
instance Functor Maybe where
fmap f (Just x) = Just (f x)
fmap f Nothing = Nothing
Tôi có thể thấy điều này trong ghci?
Khi, tôi sử dụng :info
trong ghci, tôi có được điều này:
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'
Trong đầu ra ở trên, tôi muốn nhìn thấy nó như thế nào được định nghĩa trong Data.Maybe như một ví dụ cho Functor
. Dù sao để thấy điều đó trong ghci?
Khá đơn giản để chạy hoogle trên máy của riêng bạn ('cài đặt cabal; dữ liệu hoogle'). – aavogt
@aavogt: đúng, nhưng tìm kiếm dòng lệnh sẽ không cung cấp cho bạn các liên kết tốt đẹp tới mã khóa như phiên bản trực tuyến. Và việc sử dụng nó như một máy chủ cục bộ không đơn giản như vậy. – leftaroundabout
Để tìm kiếm thứ gì đó như 'dữ liệu đôi' và việc thực hiện của nó, giả sử' + 'để phù hợp với' Num', phương pháp này vẫn không cung cấp cách xem mã nguồn. Ví dụ 'Maybe' trong hoogle cung cấp một liên kết với nguồn, nhưng nói chung cho các loại nó thì không. – ely