问题标签 [deriving]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
452 浏览

haskell - 有没有办法缩短这个派生条款?

有没有办法编写以下内容:

这样该deriving子句可以以某种方式缩短,如下所示:

如果可能的话,我想避免使用 TH,我很高兴创建一个新类,根据需要将所有这些派生类作为其超类(如上MyOwnClass所示),但这并不适用于deriving机制。通过约束种类扩展,我发现你可以这样写:

不幸的是,我不能把它放在deriving条款中。有什么魔法可以让这一切发生吗?

编辑从评论看来,TH 可能是这里唯一可行的选择。(CPP 宏真的不行!)如果是这样,TH 解决方案的草图将会很高兴看到。

0 投票
1 回答
62 浏览

haskell - 为 Linear.V 派生包装器时出现类型检查错误

我正在尝试为Linear.V类型创建一个新类型包装器并派生有用的实例。我正在尝试这个:

尝试 1 - 我认为 GeneralizedNewtypeDeriving 可以,但不:

我收到此错误:

我使用这样的独立派生进行了尝试2:

但后来我得到了一个不同的错误:

我不确定为什么实际上会发生这两个错误。这可以以某种方式完成吗?我对高级类型级别的功能没有那么丰富的经验,到目前为止我也无法真正手动编写这个特定的实例定义,所以我也认为这是一个解决方案。但我更愿意以deriving某种方式使用该机制,因为它似乎更可重用。

编辑:我已经尝试过这个手动实例声明:

但这会产生以下错误:

在我看来,编译器无法弄清楚Index两者的V n Fooand Bar nis Int。但我不确定。

0 投票
1 回答
732 浏览

haskell - Haskell 中的派生实例

我想使用这样的派生实例:

但我从 GHC 收到:

这种方式对我的项目来说非常方便。我找不到解决方案。

有什么方法可以为此类数据使用派生实例?

0 投票
1 回答
235 浏览

haskell - Haskell Labeled AST: No instance for (Show1 (Label a)), 如何构造实例?

我想要一个带注释的 AST,所以我使用以下方法定义了这些递归数据结构Fix

我希望能够showa Labeled a,但编译器不高兴:

什么是类Show1,如何定义适当的实例才能显示Labeled a

0 投票
2 回答
403 浏览

haskell - Haskell 实例为 newtype 读取,它只是一个 int

我是 Haskell 的新手,我希望能够使用新类型,这样我就可以知道什么是什么,但我还必须从字符串中读取它。我有

read "5" :: SpecialId如果我在 newtype 中派生 Read 它不起作用,我希望能够做到,它只适用于read "SpecialId 5" :: SpecialId. 我试过了

但这给了我

0 投票
0 回答
256 浏览

haskell - 新类型派生 IsSequence

我有一个 newtype X,它基本上是一个整数列表。我使用 ClassyPrelude 而不是标准 Prelude 并希望派生 IsSequence 类。这使得也有必要派生许多其他类。

语言扩展 GeneralizedNewtypeDeriving 应该允许这样做(这里与 DerivingStrategies 扩展一起使用)。我想:

完整文件:

(所有其他语言扩展似乎都很重要)

MonoTraversable但是,这会为and产生很多错误消息IsSequence

我无法阅读(也许它与默认签名有关?,不知道......)。从派生子句中省略 2 个类会使代码编译。

问题:在这种情况下如何推导出 IsSequence?

出于多种原因,我的用例无法使用类型别名,但我想使用这些类提供的功能。如果无法派生,则有必要自己实现类方法。

0 投票
0 回答
43 浏览

c++ - 如何调用派生类operator()?

我想创建一个表达式结构来计算值(通过调用 operator().

expr - 基本表达式类,它应该像 result = expression(100500) 一样工作。const_value - 结构返回常量值。参数 - 返回它的参数(== 函数 ID)。e_add, prod, sub, ... - 不同的功能。

为什么代码调用基类 operator(),但忽略派生结构?

输出:

完整源代码:

0 投票
1 回答
756 浏览

idris - 如何在 Idris 中使用“派生”?

我正在尝试在 Idris 中导出 Show、Eq、Ord 等,但以下试验均无效:

线索#1:

得到:

轨迹#2:

得到:

线索#3:

得到:

我已经derivinghttp://docs.idris-lang.org/和 google 上搜索过关键字,甚至在 test/ 目录下的 idris-dev repo 中搜索过,但是没有关于在 idris 中派生的使用演示。任何人都可以帮忙吗?

0 投票
1 回答
324 浏览

c++11 - 如何派生 std::vector?

std::vector我想要一个为我的操作员派生的类[]

如何std::vector为 C++11 派生所有构造函数和分配运算符?

0 投票
1 回答
92 浏览

haskell - 推导后什么时候应该加括号?

我看到两个表情

我在推导后应该使用括号时感到困惑。我知道我们应该在有多个类的地方使用括号和逗号。