【问题标题】:Why does 5 :: Sum Integer work as literal?为什么 5 :: Sum Integer 像文字一样工作?
【发布时间】:2016-12-15 12:26:04
【问题描述】:

为什么5 :: Sum Integer 在解释器中工作但给出了一个

newtype NovoTipo a = NovoTipo a

6 :: NovoTipo Integer 不起作用?

【问题讨论】:

    标签: haskell literals


    【解决方案1】:

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

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

    :set -XGeneralizedNewtypeDeriving
    

    然后你可以写:

    newtype NovoTipo a = NovoTipo a deriving (Num)
    

    然后6 :: NovoTipo Integer 的类型很好。

    【讨论】:

    • 也许值得一提的是,如果没有该扩展,实例仍然可以提供手动(取消)包装。
    猜你喜欢
    • 2011-07-10
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2019-06-10
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多