GHCi中是否有办法基本上获得州转储?我的意思是列表:
假设这是可能的,是否也可以在运行时执行此操作,例如在异常期间?
答案 0 :(得分:4)
:browse
会为您提供大部分信息。它显示
没有任何参数,它显示当前加载的模块的此信息。您还可以指定其他模块。
Prelude> :browse Control.Applicative
class (Functor f) => Applicative f where
pure :: a -> f a
(<*>) :: f (a -> b) -> f a -> f b
(*>) :: f a -> f b -> f b
(<*) :: f a -> f b -> f a
...
要查看更多详细信息,包括运算符的优先级和关联性,以及数据类型的实例,请使用:info
。
Prelude> :info (^)
(^) :: (Num a, Integral b) => a -> b -> a -- Defined in GHC.Real
infixr 8 ^
Prelude> :info Bool
data Bool = False | True -- Defined in GHC.Bool
instance Bounded Bool -- Defined in GHC.Enum
instance Enum Bool -- Defined in GHC.Enum
instance Eq Bool -- Defined in GHC.Base
instance Ord Bool -- Defined in GHC.Base
instance Read Bool -- Defined in GHC.Read
调试时也可以使用这些命令。
有关详细信息,请键入:help
或查看the GHCi chapter of the GHC user's guide。
答案 1 :(得分:1)
有获取此信息的方法。问题是,据我所知,没有办法按照你想要的方式过滤它,但无论如何它是:
如果要查看当前在ghci中定义的所有标识符,包括类,运算符,构造函数和类型,只需在光标位于空格上时按Tab键。
如果您想知道运营商*
的优先级和关联性,请使用
:i *
如果您想查看哪些类M
只是使用
:i M
如果您想查看函数f
的签名,请使用
:i f
如果您编写:set -fbreak-on-exception
,那么当抛出异常时ghci会中断然后失败,然后您可以在异常期间使用上述所有命令。