问题标签 [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.
parsing - 如何在 Haskell 中查看派生实例/派生的生成代码
因此,在 Haskell 中,这样做真的很容易:
这很棒,但我希望能够将一些数据作为字符串从 Haskell 传递到 Elm 语言。这些语言非常相似,如果我有 Read 的 Haskell 实现,我可以轻松地将其手动转换为 Elm。
问题是,当我使用派生时,函数会自动生成,但我实际上看不到它的作用。
我想知道,有没有一种方法可以使用 Read 和 Show 自动生成用于解析和显示的代码,以便我可以真正看到代码本身?
haskell - 为什么没有 `-XDeriveApplicative` 扩展?
GHC 有几个有用的语言扩展,用于机械地派生各种常见的 Haskell 类型类 ( -XDeriveFunctor
, -XDeriveFoldable
, -XDeriveTraversable
)。似乎这Applicative
是另一个经常需要并且经常容易派生的类。对于包含类型插槽的简单记录a
,例如,
该Applicative
实例是平凡派生的,
a
即使在一些值隐藏在其他应用函子中的稍微困难的情况下,例如,
一个合理的例子很容易写出来,
为什么-XDeriveApplicative
不存在实现这些机械实例的扩展?甚至derive
andgeneric-derive
软件包显然也缺乏Applicative
支持。是否存在阻止这些实例通常有效的理论问题(除了那些可能也威胁到Functor
、Foldable
或Traversable
扩展的原因)?
haskell - Haskell GHC-7.6.2 使用 HashMap 派生数据和可类型化
升级到 Ubuntu 13.10 后,我的一个 Haskell 代码无法编译。以下代码在(至少)ghc-7.0.x 下编译没有问题,但在 ghc-7.6.2 下编译失败(使用 unordered-containers-0.2.2.1):
我得到的错误是:
Data.HashMap.Strict 有实例声明:(Data k, Data v, Eq k, Hashable k) => Data (HashMap kv)。由于 Bar 是 Data 的一个实例,这应该可以工作,还是我遗漏了什么?
haskell - 为 GADT 中的不可访问代码启用“-fno-warn-”
给定一个GADT
由幻像变量索引的索引,我可以使用独立派生来创建一些简单的实例
这似乎在 GHCi 中完美运行
但是,当我尝试编译时,会收到警告。
这似乎是 GADT 派生代码的一个错误位(re: Haskell Inaccessible code bug? and https://ghc.haskell.org/trac/ghc/ticket/8128)但因为它似乎有正确的行为我'我想知道
-fno-warn-*
我可以用一些标志关闭这些警告吗?并且,如果可能的话- 这样做有什么问题的副作用吗?
c# - 基类对象作为派生类的参数
(简化)场景:
如果我想实例化一个 DerivedClass 对象,我必须传递创建 BaseClass 对象和 DerivedClass 对象所需的所有参数。同样对于每个 BaseClass 构造函数,我必须(至少在我的具体情况下应该)在派生类中提供一个具有相同参数的构造函数,以及派生类属性的参数。然后,如果我更改或删除基类中的构造函数,我必须更改或删除派生类中的相应构造函数。
我想知道是否可以为接受基类对象作为参数的派生类使用构造函数:
这可以称为:
如果基类中的构造函数发生变化,我不必为派生类考虑它。有什么办法可以做到这一点?
haskell - 在 Haskell 中导出 Data.Complex
我的代码如下所示:
但这似乎是一个不好的方法。我宁愿有
并构造一个类似于 的 ComplexNumber ComplexNumber $ Real 0.0
。
问题是如何使成为Complex Number
可能。由于所有类型Number
都有对应的Complex
实例,我可以添加deriving Complex
到Number
吗?
generics - 派生没有模板 haskell 的记录数据类型
所以,我一直在玩弄 GHC.Generics,它们很棒,但似乎有限/主要集中在生成实例上。
如果可能的话,我想做的是从另一个数据类型派生一个新的数据类型。
假设您有以下类型:
我想“免费”获得以下数据类型:
我考虑过的一种可能性是使用类型族,但是新数据必须与 Xpto 相同:
我开始认为这一切都不可能,而且我确信这有充分的理由。
注意 1:我知道这对于 Template Haskell 可能是可行的......只是想知道是否还有其他方法。
haskell - Haskell中用户定义数据类型的随机值
我定义了以下数据类型:
我创建了一个函数,它应该返回一个随机的 NewBool 值
我在这里读到,我必须使 NewBool 成为 Random 的实例才能使用 randomIO。所以我这样做了:
真诚地,这只是我在另一篇文章中找到的内容的复制和粘贴,但我不明白它是如何工作的?r 的值和类型是如何定义的?谁能帮我?谢谢 ;)
haskell - 使用 GHC.Generics 派生默认实例
我有一个类型类Cyclic
,我希望能够为其提供通用实例。
给定一个 sum 类型的 nullary 构造函数,
我想生成一个与此等效的实例:
我试着Generic
像这样设计出所需的机器
现在我可以提供Cyclic
使用的默认实现GCyclic
:
但我的GCyclic
例子不正确。T3
从上面使用
很清楚为什么rot
等同于id
这里。grot
向下递归 的(:+:)
结构,T3
直到遇到基本情况grot U1 = U1
。
有人建议#haskell
使用构造函数信息,M1
因此grot
可以选择下一个要递归的构造函数,但我不确定如何执行此操作。
是否可以生成所需的Cyclic
usingGHC.Generics
或其他形式的 Scrap Your Boilerplate 实例?
编辑:我可以Cyclic
用Bounded
和写Enum
但是(原样)这是不令人满意的,因为它需要所有Bounded
,Enum
和Eq
. 此外,Enum
在某些情况下,GHC 无法自动导出,而更健壮的Generic
可以。
haskell - 派生实例 Typeable 与上下文
我正在编写处理 HTTP 请求的函数集,并且需要创建一组异常来处理失败。这里是
其中WrongURIException
对应于格式ConnException
错误的 uri、TCP 堆栈中的错误和 RequestException 以处理具有非 2xx 响应代码的响应。在第 3 行声明之前instance Exception
,我应该派生 Typeable 但我迷失了类型。我该怎么办?