2015-11-01 92 views
5
Prelude Data.Void> :info Void 
data Void  -- Defined in `Data.Void' 
instance [safe] Eq Void -- Defined in `Data.Void' 
instance [safe] Ord Void -- Defined in `Data.Void' 
instance [safe] Read Void -- Defined in `Data.Void' 
instance [safe] Show Void -- Defined in `Data.Void' 

[安全]是什麼意思?[安全]標記在ghci中的含義是什麼?

回答

4

它只是表示在使用安全擴展定義的模塊中定義了數據類型。你可以找到擴展的詳細信息in the user guide

{-#LANGUAGE Safe#-} 

data Test = Test deriving (Eq, Show) 

然後嘗試它在ghci

事實上,你可以通過使用Safe擴展定義模塊測試自己

λ> :i Test 
data Test = Test  
instance [safe] Eq Test 
instance [safe] Show Test 

但需要注意的是,在當前GHC (7.10.2),由於this ghc bug,信託擔保不能依賴安全延期。

+0

已更新指向[Haskell用戶指南安全擴展]的鏈接(https://downloads.haskell.org/~ghc/7.8.4/docs/html/users_guide/safe-haskell.html) – mschmidt