2015-11-01 5 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' 

Co oznacza [bezpieczny]?Co oznacza [bezpieczny] znacznik w ghci?

Odpowiedz

4

Oznacza to po prostu, że typ danych jest zdefiniowany w module zdefiniowanym przy użyciu bezpiecznego rozszerzenia. Możesz znaleźć szczegóły rozszerzenia in the user guide.

W rzeczywistości, można przetestować to samemu definiując moduł używając rozszerzenia Safe:

{-#LANGUAGE Safe#-} 

data Test = Test deriving (Eq, Show) 

A potem próbuje ją w ghci:

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

Należy jednak pamiętać, że w obecnej GHC (7.10.2), bezpiecznego przedłużenia nie można powoływać się na gwarancję zaufania z powodu this ghc bug.

+0

Zaktualizowany link do [Haskell Users Guide for Safe extension] (https://downloads.haskell.org/~ghc/7.8.4/docs/html/users_guide/safe-haskell.html) – mschmidt