![](/img/trans.png)
[英]How to declare instances of a typeclass (like Show) for all types in my own typeclass?
[英]find all types that are instances of a typeclass
learnyouahaskell 提到以下内容 :
Enum类中的类型是
(), Bool, Char, Ordering, Int, Integer, Float and Double
有没有办法在GHCi中找到哪种类型是哪种类型类型的实例,反之亦然?
我想要在GHCi中使用的类似于:t
来查找表达式的类型。
当然。
对于类型类:
Prelude> :i Enum
class Enum a where
succ :: a -> a
pred :: a -> a
toEnum :: Int -> a
fromEnum :: a -> Int
enumFrom :: a -> [a]
enumFromThen :: a -> a -> [a]
enumFromTo :: a -> a -> [a]
enumFromThenTo :: a -> a -> a -> [a]
-- Defined in `GHC.Enum'
instance Enum Ordering -- Defined in `GHC.Enum'
instance Enum Integer -- Defined in `GHC.Enum'
instance Enum Int -- Defined in `GHC.Enum'
instance Enum Char -- Defined in `GHC.Enum'
instance Enum Bool -- Defined in `GHC.Enum'
instance Enum () -- Defined in `GHC.Enum'
instance Enum Float -- Defined in `GHC.Float'
instance Enum Double -- Defined in `GHC.Float'
对于类型:
Prelude> :i Integer
data Integer
= integer-gmp:GHC.Integer.Type.S# GHC.Prim.Int#
| integer-gmp:GHC.Integer.Type.J# GHC.Prim.Int# GHC.Prim.ByteArray#
-- Defined in `integer-gmp:GHC.Integer.Type'
instance Enum Integer -- Defined in `GHC.Enum'
instance Eq Integer -- Defined in `integer-gmp:GHC.Integer.Type'
instance Integral Integer -- Defined in `GHC.Real'
instance Num Integer -- Defined in `GHC.Num'
instance Ord Integer -- Defined in `integer-gmp:GHC.Integer.Type'
instance Read Integer -- Defined in `GHC.Read'
instance Real Integer -- Defined in `GHC.Real'
instance Show Integer -- Defined in `GHC.Show'
instance Ix Integer -- Defined in `GHC.Arr'
不幸的是,这仅限于标识符,而不是表达式。 所以你不能直接查找,例如,什么实例适用于[Char]
这样的类型。
另请注意,它只会显示范围内的实例和类型,因此您可能需要导入您感兴趣的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.