当前位置:  开发笔记 > 编程语言 > 正文

Haskell - 从类型构造函数的枚举中自动导出Integral

如何解决《Haskell-从类型构造函数的枚举中自动导出Integral》经验,为你挑选了1个好方法。

我想知道是否有办法让GHC从表单的数据类型自动派生积分实例:

data = A | B | C | D

那么从积分A = 0,从积分B = 1等?

运用

data MyType = A | B | C | D deriving (Show, Eq, Ord, Enum, Real, Integral)

产生错误

无法创建'Integral MyType'的派生实例:'Integral'不是可派生类

在'MyType'的数据声明中

(即使扩展名为GeneralizedNewtypeDeriving)



1> Lynn..:

如果你想要的是一个函数,使得f A == 0,f B == 1等等,你可以使用fromEnum :: Enum a => a -> Int.

Integral类型类是你实际上可以加,减种,除...在你的情况,还没有一个非常明智地执行这些东西.如果你想把它们作为算术模数实现1 + fromEnum maxBound......好吧,我不建议那样做,如果你Enum代表的只是那些数字,如果它们有,那么modular-arithmetic包已经实现了你需要的东西.


要添加到此,您可以派生出"Enum".
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有