GHCi中是否有辦法基本獲得狀態轉儲?我的意思是一個列表:GHCi環境轉儲
- 所有加載的運算符以及它的優先級,關聯性和簽名。
- 所有加載的類。
- 所有加載的數據,類型和newtype以及它們是實例的類。
- 所有已加載的函數及其簽名,以及它們所屬的類。
假設這是可能的,是否也可以在運行時執行此操作,比如在異常期間執行此操作?
GHCi中是否有辦法基本獲得狀態轉儲?我的意思是一個列表:GHCi環境轉儲
假設這是可能的,是否也可以在運行時執行此操作,比如在異常期間執行此操作?
: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。
有辦法獲取這些信息。問題是,據我所知,目前還沒有確切的過濾它,你想要的方式方法,但反正這裏是:
如果你想看到的所有標識符,包括類,運營商,目前在ghci中定義的「構造函數」和「類型」只是在光標位於空格時按Tab鍵。
如果你想知道運營商*
的優先級和結合只是使用
:i *
如果你想看到什麼類M
是隻使用
:i M
如果實例你想看到一個功能的簽名f
只是用
:i f
如果你編寫:set -fbreak-on-exception
,那麼ghci將在發生異常時中斷而不會失敗,然後在異常期間可以使用上述所有命令。
我想要這樣的整個系統不只是一個模塊。 –
@VansonSamuel:形式爲':browse * Module',它將顯示該模塊範圍內的任何內容的信息,即所有的導入以及導出。也許這更接近你所需要的? – hammar
我會試試這個。謝謝@hammar這就像你幫助我的第四個問題。 :-) –