在ghci中,[safe]标记是什么意思?

7
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'

[safe]的含义是什么?
1个回答

6

它的意思是数据类型被定义在使用安全扩展定义的模块中。您可以在用户指南中找到扩展的详细信息

实际上,您可以通过使用Safe扩展来定义一个模块来测试它:

{-#LANGUAGE Safe#-}

data Test = Test deriving (Eq, Show)

然后在 ghci 中尝试它:

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

但需要注意的是,在当前的 GHC(7.10.2)中,由于这个 ghc bug,安全扩展不能被信任保证。


更新了 Haskell 安全扩展用户指南 的链接。 - mschmidt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接