ZhekaKozlov
ZhekaKozlov

Reputation: 39586

What does [safe] marker mean in ghci?

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'

What does [safe] mean?

Upvotes: 9

Views: 444

Answers (1)

Sibi
Sibi

Reputation: 48746

It simply means that the datatype is defined in a module which is defined using safe extension. You can find the details of the extension in the user guide.

In fact, you can test that yourself by defining a module using the Safe extension:

{-#LANGUAGE Safe#-}

data Test = Test deriving (Eq, Show)

And then trying it out in ghci:

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

But note that in the current GHC (7.10.2), the safe extension cannot be relied of the trust guarantee because of this ghc bug.

Upvotes: 7

Related Questions