为什么5 :: Sum Integer作为文字工作?

时间:2016-12-15 12:26:04

标签: haskell literals

为什么5 :: Sum Integer在解释器中起作用,但给出了

newtype NovoTipo a = NovoTipo a

6 :: NovoTipo Integer不起作用?

1 个答案:

答案 0 :(得分:16)

您可以为具有Num实例的任何类型编写数字文字。 Sum has it,而您的新类型没有。

您可以通过以下方式在ghci中启用GeneralizedNewtypeDeriving

:set -XGeneralizedNewtypeDeriving

然后你可以写:

newtype NovoTipo a = NovoTipo a deriving (Num)

然后6 :: NovoTipo Integer输入得很好。