2012-02-17 7 views
20

क्या यह देखना संभव है कि किस प्रकार के प्रकार के प्रकार लागू होते हैं? कुछ की तरह:देखें कि किस टाइपक्लास टाइप को ghci में एक उदाहरण है?

>:typeclasses Int 
[Num, etc...] 
+0

इसके अतिरिक्त (नीचे) आप इनफेरियल हास्केल मोड का उपयोग कर स्रोत देख सकते हैं। दस्तावेज़ीकरण के लिए github.com/haskell/haskell-mode/wiki और chrisdone.com/posts/haskell-mode-docs – artella

उत्तर

25

:info आदेश का उपयोग करें।

Prelude> :info Int 
data Int = GHC.Types.I# GHC.Prim.Int# -- Defined in GHC.Types 
instance Bounded Int -- Defined in GHC.Enum 
instance Enum Int -- Defined in GHC.Enum 
instance Eq Int -- Defined in GHC.Base 
instance Integral Int -- Defined in GHC.Real 
instance Num Int -- Defined in GHC.Num 
instance Ord Int -- Defined in GHC.Base 
instance Read Int -- Defined in GHC.Read 
instance Real Int -- Defined in GHC.Real 
instance Show Int -- Defined in GHC.Show 

स्वाभाविक रूप से यह सूची वर्तमान में आयात किए गए मॉड्यूल पर निर्भर करती है।

Prelude> :info (->) 
data (->) a b -- Defined in GHC.Prim 
Prelude> :m +Control.Monad.Instances 
Prelude Control.Monad.Instances> :info (->) 
data (->) a b -- Defined in GHC.Prim 
instance Monad ((->) r) -- Defined in Control.Monad.Instances 
instance Functor ((->) r) -- Defined in Control.Monad.Instances 
+1

वाह देखें, मैंने अभी देखा है कि हमने एक दूसरे के * एक सेकंड * के भीतर हमारे उत्तर पोस्ट किए हैं: 21:32: 48Z बनाम 21: 32: 47Z। –

+0

@ टिखोन जेल्विस: हां, अच्छा। –

14

प्रकार के साथ :info या :i की कोशिश करो।

यह आपको टाइपक्लास और प्रकार की घोषणा दोनों के साथ-साथ यह बताएगा कि आपको परिभाषित किया गया था (जो उपयोगी है अगर आपको याद नहीं है कि इसमें कौन से निर्माता हैं)।

आपके द्वारा परिभाषित किए जाने वाले प्रकारों के लिए, आपको यह भी एक लिंक मिलता है जहां इसे Emacs में परिभाषित किया गया था। यह आपके स्रोत के चारों ओर नेविगेट करना वाकई सुविधाजनक बनाता है।

ध्यान दें कि :i बहुत बहुउद्देश्यीय है: आप इसे और प्रकार दोनों मानों पर उपयोग कर सकते हैं। तो :i True और :i Bool दोनों काम करते हैं!

*Main> :i Bool 
data Bool = False | True -- Defined in GHC.Bool 
instance [overlap ok] Truthy Bool 
    -- Defined at /home/tikhon/Documents/blarg2.hs:40:10-20 
instance Bounded Bool -- Defined in GHC.Enum 
instance Enum Bool -- Defined in GHC.Enum 
instance Eq Bool -- Defined in GHC.Classes 
instance Ord Bool -- Defined in GHC.Classes 
instance Read Bool -- Defined in GHC.Read 
instance Show Bool -- Defined in GHC.Show 
instance Ix Bool -- Defined in GHC.Arr 

*Main> :i True 
data Bool = ... | True -- Defined in GHC.Bool 

यह भी ऑपरेटरों की पूर्वता की जाँच के लिए बहुत उपयोगी है:

*Main> :i + 
class (Eq a, Show a) => Num a where 
    (+) :: a -> a -> a 
    ... 
     -- Defined in GHC.Num 
infixl 6 + 
संबंधित मुद्दे