gpt4 book ai didi

Haskell——有什么方法可以关闭 `deriving` 实例的可重新绑定(bind)语法?

转载 作者:行者123 更新时间:2023-12-04 14:49:31 25 4
gpt4 key购买 nike

有一个烦人的“特性”,即派生实例也会受到 RebindableSyntax 的影响。扩大。我想写的例子:

{-# LANGUAGE RebindableSyntax #-}
import qualified Prelude
data Color = Red | Green | Blue | Periwinkle | Fuschia deriving (Prelude.Eq, Prelude.Ord)

这会出现错误“不在范围内:`ifThenElse'”。

最佳答案

这对我来说似乎是一个错误特征——deriving无论如何,从句充满了内置的魔法,所以我怀疑使用反弹语法的派生实例在实践中是否有用。现在,如果您还可以重新绑定(bind) deriving子句本身并使用 TH 拼接代替......但我离题了。

我怀疑最简单和最简单的解决方案是使用不同的模块。将数据类型定义放在自己的模块中,使用deriving子句在范围内包含 Prelude 函数,然后使用可重新绑定(bind)的语法在模块中导入类型。如果您需要在模块中进一步模块化,请注意 StandaloneDeriving也存在,并且可以让您在一个模块中定义类型(RebindableSyntax 处于事件状态),在另一个模块中派生实例(没有 RebindableSyntax ),并从实际使用该类型的模块中导入两者。

关于Haskell——有什么方法可以关闭 `deriving` 实例的可重新绑定(bind)语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9024856/

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