8
为什么在解释5 :: Sum Integer
工作,但给予为什么5 :: Sum Integer作为文字工作?
newtype NovoTipo a = NovoTipo a
6 :: NovoTipo Integer
不起作用?
为什么在解释5 :: Sum Integer
工作,但给予为什么5 :: Sum Integer作为文字工作?
newtype NovoTipo a = NovoTipo a
6 :: NovoTipo Integer
不起作用?
您可以为任何具有Num
实例的类型编写数字文字。 Sum
has it,而你的newtype没有。
可以在ghci中通过以下方式实现GeneralizedNewtypeDeriving
:
:set -XGeneralizedNewtypeDeriving
然后,你可以写:
newtype NovoTipo a = NovoTipo a deriving (Num)
然后6 :: NovoTipo Integer
非常类型化。
也许值得一提的是,没有那个扩展名,实例仍然可以提供手动(un)包装。 –