问题标签 [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 投票
2 回答
695 浏览

haskell - 如何为具有类型族的记录派生实例

这是我正在尝试但无法编译的内容:

编译错误:

0 投票
1 回答
599 浏览

haskell - 无法创建 monad 转换器的派生实例

我有以下内容newtype

我正在尝试MonadTrans自动派生,但出现以下错误:

但是,为工作编写简单的实例MonadTrans就可以了:

出现这种错误消息的原因是什么?

0 投票
1 回答
563 浏览

haskell - Haskell:为 Fix 类型派生 Show

我正在尝试使用recursion-schemes. 我希望能够打印它。

错误信息:

我如何使T1派生Show

0 投票
1 回答
279 浏览

haskell - 为什么这个新类型没有被赋予正确的 Read 实例?

我从以下类型创建了一个newtype别名:IPData.IP

(我想让它成为一个实例ToField而不创建孤立实例。)

不过,新类型似乎并没有以Read应有的方式支持。在这个 GHCi 成绩单中,您可以看到给定的字符串可以解释为 anIP但不能解释为 an IPAddress

无论我是否启用了 GeneralizedNewtypeDeriving,行为都是相同的。为什么 for 的Read实例IPAddress与 for 的实例不同IP

0 投票
2 回答
479 浏览

haskell - 编写适当的自定义读取实例

你好哈斯凯勒人,

我从一个月开始学习 Haskell,我正在努力为个人数据类型创建自定义读取实例。

我遵循了这个Learn Yourself a Haskell 中的相关章节,这是我的代码片段。

我的目标是解析输入"(1,3)"以输出类似Position (1,3)

但是,我收到以下错误消息:

ordn 函数也一样。

似乎我的let声明没有将abscand识别ordn为函数(或者至少尝试直接应用它们,而我只想将它们定义为部分应用的函数,以便稍后在参数处应用它们str)。我也可能弄乱了我的Position值构造函数。

我对 Haskell 编码风格不熟悉,可能使用了一些我不完全理解的关键字和工具。你能提示我如何编写它以使其工作吗?

先感谢您。

0 投票
1 回答
1904 浏览

haskell - 自动为 GADT 派生节目实例

假设我有一个复杂的 GADT,其中有许多隐藏的类型参数作为构造函数:

我想让这个数据类型可以显示,而不必手动编写实例。问题是,由于Show不再是超类Num,添加一个简单deriving instance Show T的并不足以让编译器推断它必须Show为所有内部隐藏类型参数添加约束。

对于每个隐藏类型参数,它输出类似

向数据类型添加Show约束也不是一种选择,因为它限制了T. 似乎deriving instanec Show T应该引入Show对隐藏数据类型的约束,尽管我不确定。

我该怎么办?

0 投票
1 回答
87 浏览

haskell - 使用多参数类型派生扩展

我有一个 Ast 类型的构造函数,由标识符类型参数化。使用 DeriveFunctor、DeriveFoldable 和 DeriveTraversable 扩展,可以自动创建适当的实例。

现在我发现引入更多类型参数很有用,但不幸的是上述方法无法扩展。理想情况下,我希望能够将我的 Ast 类型包装在选择类型中,这将允许我映射到适当的类型参数。有什么方法可以实现类似的效果而不必自己定义实例?

编辑:

这是原始 Ast 的一个小示例:

0 投票
1 回答
543 浏览

haskell - Haskell派生显示错误

我为大学评估做了一些关于彩色 Petri 网的研究,我需要在 Haskell 中实现它们。我以这份文件为起点。

当我试图在 Haskell 中导入这个模块时:

我收到以下错误:

我仍然是 Haskell 的新手,因此将不胜感激。

谢谢,丹尼斯

0 投票
1 回答
354 浏览

haskell - 我可以在派生的 Show 中制作 haskell GADT 数据构造函数中缀吗?

考虑两个data声明:

运行上述程序会产生:

所以派生show知道这Y是中缀并相应地打印它。::语法似乎不允许中缀。

有什么方法可以让编译器将 show for 派生为W中缀,(除了显式地为 提供一个show实例Z)?所需的输出是

0 投票
3 回答
5802 浏览

haskell - 在 Haskell 中推导是什么/意味着什么?

堆栈溢出推导的定义是:

“在 Haskell 中,派生实例是与数据或新类型声明一起自动生成的实例声明。派生实例声明的主体在语法上是从关联类型的定义中派生的。”

老实说,我真的不明白其中的任何一个。

下面的代码取自:链接

我的问题是,派生语句在这种特定情况下做什么,以及派生语句一般做什么?