Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does "instance [safe]" mean in ghci ":info" output? [duplicate]

Tags:

haskell

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?

like image 609
ZhekaKozlov Avatar asked Nov 18 '22 09:11

ZhekaKozlov


1 Answers

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.

like image 126
Sibi Avatar answered Dec 17 '22 05:12

Sibi