为什么5 :: Sum Integer
在解释器中起作用,但给出了
newtype NovoTipo a = NovoTipo a
6 :: NovoTipo Integer
不起作用?
答案 0 :(得分:16)
您可以为具有Num
实例的任何类型编写数字文字。 Sum
has it,而您的新类型没有。
您可以通过以下方式在ghci中启用GeneralizedNewtypeDeriving
:
:set -XGeneralizedNewtypeDeriving
然后你可以写:
newtype NovoTipo a = NovoTipo a deriving (Num)
然后6 :: NovoTipo Integer
输入得很好。