2012-02-17 7 views
20

タイプが実装するタイプメーターを確認することはできますか?ような何か:Typeが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

うわー、私はちょうど私たちがお互いの1秒以内に回答を投稿したことに気付きました:21:32: 48Z対21:32:47Z。 –

+0

@TikhonJelvis:うん、いいよ。 –

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 + 
関連する問題