gpt4 book ai didi

haskell - 封闭类型类

转载 作者:行者123 更新时间:2023-12-03 13:40:43 25 4
gpt4 key购买 nike

是否可以创建一个不能再接纳新成员的类型类(也许通过使用模块边界)?我可以拒绝导出完整实例定义所必需的函数,但这只会在有人生成无效实例时导致运行时错误。我可以让它成为编译时错误吗?

最佳答案

从 GHC 7.8.1 开始,closed type families可以声明,我想在他们的帮助下,ConstraintKinds , 你可以这样做:

type family SecretClass (a :: *) :: Constraint where
SecretClass Int = ()
SecretClass a形成一个约束,相当于一个类型类,并且由于该家族不能被任何人扩展,因此不能定义“类”的其他实例。

(这实际上只是猜测,因为我无法对其进行测试,但 this interesting link 中的代码使它看起来可以工作。)

关于haskell - 封闭类型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17849870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com