我发现

Prelude> :i () 
data () = ()    -- Defined in `GHC.Tuple' 
instance Bounded () -- Defined in `GHC.Enum' 
instance Enum () -- Defined in `GHC.Enum' 
instance Eq () -- Defined in `GHC.Classes' 
instance Ord () -- Defined in `GHC.Classes' 
instance Read () -- Defined in `GHC.Read' 
instance Show () -- Defined in `GHC.Show' 

那么,mean()是Enum的一个实例,应该实现了succ函数。然而,当我尝试 succ () 时,我得到了 *** Exception: Prelude.Enum.().succ: bad argument

我搜索了 GHC.Tuple 的源代码,其中应该定义 () 的类型但是 GHC.Tuple

请您参考如下方法:

succ 函数只为有后继的参数定义。

Prelude> succ False 
True 
Prelude> succ True 
*** Exception: Prelude.Enum.Bool.succ: bad argument 
 
Prelude> succ 0 
1 
Prelude> succ 1 
2 
Prelude> succ ((2^63 - 1) :: Int) 
*** Exception: Prelude.Enum.succ{Int}: tried to take `succ' of maxBound 
 
Prelude> succ () 
*** Exception: Prelude.Enum.().succ: bad argument 

所以答案是:函数已实现,它总是(正确地)返回一个错误。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!