Haskell代码行未编译:“非法数据类型上下文”

古腾

我无法在Haskell中编译此行代码,但可以在我教授的系统上使用。我使用ghci版本7.6.2。

data Eq a => Shape a = Shape a

更确切地说,这是我得到的错误

[1 of 1] Compiling Main             ( test.hs, interpreted )

test.hs:1:6:
Illegal datatype context (use -XDatatypeContexts): Eq a =>
Failed, modules loaded: none.

这是什么错误?

谢谢

本·米尔伍德

您的教授可能正在使用旧版本的GHC。您发布的行使用的功能最近已被删除。可能的解决方案是:

  1. 删除Eq a =>并写入data Shape a = Shape a

  2. 正如GHC所说,给该-XDatatypeContexts标志重新启用已删除的功能。

更详细地:Eq a =>类型声明一部分称为数据类型上下文它的唯一功能是限制Shape构造函数的类型,以便代替Shape :: a -> Shape aget Shape :: Eq a => a -> Shape a它不会使您不必编写Eq a涉及Shapes的类型签名,甚至在不需要时甚至会要求您编写它们。当数据类型中的严格字段需要类约束时,该功能曾经很有用,但该功能早已被删除。

简而言之,仅删除上下文几乎总是对您的程序有所改进,因此将它们从Haskell 2011语言标准中删除。自GHC 7.0.1起,可以选择关闭它们,而自7.2.1起,它已成为默认设置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Haskell代码行未编译:“非法数据类型上下文”

来自分类Dev

如何修复“非法数据类型上下文”(使用-XDatatypeContexts)?

来自分类Dev

常规的haskell代数数据类型是否等效于上下文无关的语法?GADTS呢?

来自分类Dev

错误,由于非法上下文,查询未执行

来自分类Dev

如何在没有GADT或数据类型上下文的情况下定义列表的Eq实例

来自分类Dev

有没有办法检查Jinja2中上下文变量的数据类型?

来自分类Dev

在数据类型构造函数的上下文中了解不同的monadic和应用绑定/组合器?

来自分类Dev

这段代码中“上下文”的类型是什么?

来自分类Dev

是什么阻止编译器消除每个特定上下文中未使用的数据成员?

来自分类Dev

在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

来自分类Dev

什么是类型上下文?

来自分类Dev

LINQ结果的数据上下文对象类型

来自分类Dev

如何在EF6代码优先中对数据库上下文使用通用类型

来自分类Dev

ControlTemplates的数据上下文

来自分类Dev

数据上下文冲突

来自分类Dev

数据上下文冲突

来自分类Dev

上下文菜单MenuItem单击“数据上下文”?

来自分类Dev

在以下上下文中使用条件运算符时,为什么会有数据类型na?

来自分类Dev

由于财产非法价值而失败:上下文

来自分类Dev

范围相乘时Mathcad抛出非法上下文

来自分类Dev

类型不匹配:推断的类型为<未提供名称>,但需要上下文

来自分类Dev

Haskell实例多个上下文

来自分类Dev

ContextMenuItem上下文函数未执行

来自分类Dev

模板未显示上下文变量

来自分类Dev

Netlogo上下文未对齐

来自分类Dev

上下文未正确注入

来自分类Dev

Django模板上下文未显示

来自分类Dev

车把模板未填充上下文

来自分类Dev

插槽上下文未采用

Related 相关文章

  1. 1

    Haskell代码行未编译:“非法数据类型上下文”

  2. 2

    如何修复“非法数据类型上下文”(使用-XDatatypeContexts)?

  3. 3

    常规的haskell代数数据类型是否等效于上下文无关的语法?GADTS呢?

  4. 4

    错误,由于非法上下文,查询未执行

  5. 5

    如何在没有GADT或数据类型上下文的情况下定义列表的Eq实例

  6. 6

    有没有办法检查Jinja2中上下文变量的数据类型?

  7. 7

    在数据类型构造函数的上下文中了解不同的monadic和应用绑定/组合器?

  8. 8

    这段代码中“上下文”的类型是什么?

  9. 9

    是什么阻止编译器消除每个特定上下文中未使用的数据成员?

  10. 10

    在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

  11. 11

    什么是类型上下文?

  12. 12

    LINQ结果的数据上下文对象类型

  13. 13

    如何在EF6代码优先中对数据库上下文使用通用类型

  14. 14

    ControlTemplates的数据上下文

  15. 15

    数据上下文冲突

  16. 16

    数据上下文冲突

  17. 17

    上下文菜单MenuItem单击“数据上下文”?

  18. 18

    在以下上下文中使用条件运算符时,为什么会有数据类型na?

  19. 19

    由于财产非法价值而失败:上下文

  20. 20

    范围相乘时Mathcad抛出非法上下文

  21. 21

    类型不匹配:推断的类型为<未提供名称>,但需要上下文

  22. 22

    Haskell实例多个上下文

  23. 23

    ContextMenuItem上下文函数未执行

  24. 24

    模板未显示上下文变量

  25. 25

    Netlogo上下文未对齐

  26. 26

    上下文未正确注入

  27. 27

    Django模板上下文未显示

  28. 28

    车把模板未填充上下文

  29. 29

    插槽上下文未采用

热门标签

归档