GHCi环境转储

Van*_*uel 6 haskell ghci

GHCi中有没有办法基本上获得州转储?我的意思是列表:

  • 所有加载的运算符以及它的优先级,关联性和签名.
  • 所有加载的类.
  • 所有已加载的数据,类型和新类型以及它们所属的类.
  • 所有加载的函数都带有它的签名,如果它们属于它们所属的类.

假设这是可能的,是否也可以在运行时执行此操作,例如在异常期间?

ham*_*mar 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
...
Run Code Online (Sandbox Code Playgroud)

要查看更多详细信息,包括运算符的优先级和关联性以及数据类型的实例,请使用: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
Run Code Online (Sandbox Code Playgroud)

这些命令在调试时也可用。

有关详细信息,请键入:help或参阅GHC 用户指南的 GHCi 章节

  • @VansonSamuel:有“:browse *Module”的形式,它将显示该模块范围内任何内容的信息,即所有导入和导出。也许这更接近您所需要的? (2认同)