问题标签 [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.
haskell - 如何为具有类型族的记录派生实例
这是我正在尝试但无法编译的内容:
编译错误:
haskell - 无法创建 monad 转换器的派生实例
我有以下内容newtype
:
我正在尝试MonadTrans
自动派生,但出现以下错误:
但是,为工作编写简单的实例MonadTrans
就可以了:
出现这种错误消息的原因是什么?
haskell - Haskell:为 Fix 类型派生 Show
我正在尝试使用recursion-schemes
. 我希望能够打印它。
错误信息:
我如何使T1
派生Show
?
haskell - 为什么这个新类型没有被赋予正确的 Read 实例?
我从以下类型创建了一个newtype
别名:IP
Data.IP
(我想让它成为一个实例ToField
而不创建孤立实例。)
不过,新类型似乎并没有以Read
应有的方式支持。在这个 GHCi 成绩单中,您可以看到给定的字符串可以解释为 anIP
但不能解释为 an IPAddress
:
无论我是否启用了 GeneralizedNewtypeDeriving,行为都是相同的。为什么 for 的Read
实例IPAddress
与 for 的实例不同IP
?
haskell - 编写适当的自定义读取实例
你好哈斯凯勒人,
我从一个月开始学习 Haskell,我正在努力为个人数据类型创建自定义读取实例。
我遵循了这个和Learn Yourself a Haskell 中的相关章节,这是我的代码片段。
我的目标是解析输入"(1,3)"
以输出类似Position (1,3)
但是,我收到以下错误消息:
ordn 函数也一样。
似乎我的let
声明没有将absc
and识别ordn
为函数(或者至少尝试直接应用它们,而我只想将它们定义为部分应用的函数,以便稍后在参数处应用它们str
)。我也可能弄乱了我的Position
值构造函数。
我对 Haskell 编码风格不熟悉,可能使用了一些我不完全理解的关键字和工具。你能提示我如何编写它以使其工作吗?
先感谢您。
haskell - 自动为 GADT 派生节目实例
假设我有一个复杂的 GADT,其中有许多隐藏的类型参数作为构造函数:
我想让这个数据类型可以显示,而不必手动编写实例。问题是,由于Show
不再是超类Num
,添加一个简单deriving instance Show T
的并不足以让编译器推断它必须Show
为所有内部隐藏类型参数添加约束。
对于每个隐藏类型参数,它输出类似
向数据类型添加Show
约束也不是一种选择,因为它限制了T
. 似乎deriving instanec Show T
应该引入Show
对隐藏数据类型的约束,尽管我不确定。
我该怎么办?
haskell - 使用多参数类型派生扩展
我有一个 Ast 类型的构造函数,由标识符类型参数化。使用 DeriveFunctor、DeriveFoldable 和 DeriveTraversable 扩展,可以自动创建适当的实例。
现在我发现引入更多类型参数很有用,但不幸的是上述方法无法扩展。理想情况下,我希望能够将我的 Ast 类型包装在选择类型中,这将允许我映射到适当的类型参数。有什么方法可以实现类似的效果而不必自己定义实例?
编辑:
这是原始 Ast 的一个小示例:
haskell - Haskell派生显示错误
我为大学评估做了一些关于彩色 Petri 网的研究,我需要在 Haskell 中实现它们。我以这份文件为起点。
当我试图在 Haskell 中导入这个模块时:
我收到以下错误:
我仍然是 Haskell 的新手,因此将不胜感激。
谢谢,丹尼斯
haskell - 我可以在派生的 Show 中制作 haskell GADT 数据构造函数中缀吗?
考虑两个data
声明:
运行上述程序会产生:
所以派生show
知道这Y
是中缀并相应地打印它。::
语法似乎不允许中缀。
有什么方法可以让编译器将 show for 派生为W
中缀,(除了显式地为 提供一个show
实例Z
)?所需的输出是
haskell - 在 Haskell 中推导是什么/意味着什么?
堆栈溢出推导的定义是:
“在 Haskell 中,派生实例是与数据或新类型声明一起自动生成的实例声明。派生实例声明的主体在语法上是从关联类型的定义中派生的。”
老实说,我真的不明白其中的任何一个。
下面的代码取自:链接
我的问题是,派生语句在这种特定情况下做什么,以及派生语句一般做什么?