微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何正确访问“约束”类型?

如何解决如何正确访问“约束”类型?

我在 GHCi 中玩弄 ConstraintKinds。在链接的帖子中,我找到了一个很好的例子:

type NoConstraint = (() :: Constraint)

但我无法让它工作。 GHCi 自由输出 Constraint 类型,不允许我同时使用它。 IE。这是我的完整 GHCi 会话(我不太确定我知道正确的词;如果有合适的术语,我会感谢读者的编辑):

GHCi,version 8.6.5: http://www.haskell.org/ghc/  :? for help
Prelude> :set -XConstraintKinds -XKindSignatures
Prelude> type NoConstraint = (() :: Constraint)

<interactive>:2:28: error:
    Not in scope: type constructor or class `Constraint'
    Perhaps you meant `NoConstraint' (line 2)

如何正确访问 Constraint 类型?

解决方法

docs 中所述,Constraint 类型需要从 Data.Kind 模块导入。在下面查看我的 GHCi 会话:

Prelude> :set -XConstraintKinds -XKindSignatures
Prelude> type NoConstraint = (() :: Constraint)

<interactive>:2:28: error:
    Not in scope: type constructor or class `Constraint'
    Perhaps you meant `NoConstraint' (line 2)
Prelude> :m +Data.Kind
Prelude Data.Kind> type NoConstraint = (() :: Constraint)
Prelude Data.Kind>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。