问题标签 [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 回答
1342 浏览

parsing - 如何在 Haskell 中查看派生实例/派生的生成代码

因此,在 Haskell 中,这样做真的很容易:

这很棒,但我希望能够将一些数据作为字符串从 Haskell 传递到 Elm 语言。这些语言非常相似,如果我有 Read 的 Haskell 实现,我可以轻松地将其手动转换为 Elm。

问题是,当我使用派生时,函数会自动生成,但我实际上看不到它的作用。

我想知道,有没有一种方法可以使用 Read 和 Show 自动生成用于解析和显示的代码,以便我可以真正看到代码本身?

0 投票
3 回答
632 浏览

haskell - 为什么没有 `-XDeriveApplicative` 扩展?

GHC 有几个有用的语言扩展,用于机械地派生各种常见的 Haskell 类型类 ( -XDeriveFunctor, -XDeriveFoldable, -XDeriveTraversable)。似乎这Applicative是另一个经常需要并且经常容易派生的类。对于包含类型插槽的简单记录a,例如,

Applicative实例是平凡派生的,

a即使在一些值隐藏在其他应用函子中的稍微困难的情况下,例如,

一个合理的例子很容易写出来,

为什么-XDeriveApplicative不存在实现这些机械实例的扩展?甚至deriveandgeneric-derive软件包显然也缺乏Applicative支持。是否存在阻止这些实例通常有效的理论问题(除了那些可能也威胁到FunctorFoldableTraversable扩展的原因)?

0 投票
2 回答
284 浏览

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 的一个实例,这应该可以工作,还是我遗漏了什么?

0 投票
1 回答
102 浏览

haskell - 为 GADT 中的不可访问代码启用“-fno-warn-”

给定一个GADT由幻像变量索引的索引,我可以使用独立派生来创建一些简单的实例

这似乎在 GHCi 中完美运行

但是,当我尝试编译时,会收到警告。

这似乎是 GADT 派生代码的一个错误位(re: Haskell Inaccessible code bug? and https://ghc.haskell.org/trac/ghc/ticket/8128)但因为它似乎有正确的行为我'我想知道

  1. -fno-warn-*我可以用一些标志关闭这些警告吗?并且,如果可能的话
  2. 这样做有什么问题的副作用吗?
0 投票
5 回答
4065 浏览

c# - 基类对象作为派生类的参数

(简化)场景:

如果我想实例化一个 DerivedClass 对象,我必须传递创建 BaseClass 对象和 DerivedClass 对象所需的所有参数。同样对于每个 BaseClass 构造函数,我必须(至少在我的具体情况下应该)在派生类中提供一个具有相同参数的构造函数,以及派生类属性的参数。然后,如果我更改或删除基类中的构造函数,我必须更改或删除派生类中的相应构造函数。

我想知道是否可以为接受基类对象作为参数的派生类使用构造函数:

这可以称为:

如果基类中的构造函数发生变化,我不必为派生类考虑它。有什么办法可以做到这一点?

0 投票
2 回答
1573 浏览

haskell - 在 Haskell 中导出 Data.Complex

我的代码如下所示:

但这似乎是一个不好的方法。我宁愿有

并构造一个类似于 的 ComplexNumber ComplexNumber $ Real 0.0

问题是如何使成为Complex Number可能。由于所有类型Number都有对应的Complex实例,我可以添加deriving ComplexNumber吗?

0 投票
0 回答
219 浏览

generics - 派生没有模板 haskell 的记录数据类型

所以,我一直在玩弄 GHC.Generics,它们很棒,但似乎有限/主要集中在生成实例上。

如果可能的话,我想做的是从另一个数据类型派生一个新的数据类型。

假设您有以下类型:

我想“免费”获得以下数据类型:

我考虑过的一种可能性是使用类型族,但是新数据必须与 Xpto 相同:

我开始认为这一切都不可能,而且我确信这有充分的理由。

注意 1:我知道这对于 Template Haskell 可能是可行的......只是想知道是否还有其他方法。

0 投票
1 回答
302 浏览

haskell - Haskell中用户定义数据类型的随机值

我定义了以下数据类型:

我创建了一个函数,它应该返回一个随机的 NewBool​​ 值

我在这里读到,我必须使 NewBool​​ 成为 Random 的实例才能使用 randomIO。所以我这样做了:

真诚地,这只是我在另一篇文章中找到的内容的复制和粘贴,但我不明白它是如何工作的?r 的值和类型是如何定义的?谁能帮我?谢谢 ;)

0 投票
1 回答
896 浏览

haskell - 使用 GHC.Generics 派生默认实例

我有一个类型类Cyclic,我希望能够为其提供通用实例。

给定一个 sum 类型的 nullary 构造函数,

我想生成一个与此等效的实例:

我试着Generic像这样设计出所需的机器

现在我可以提供Cyclic使用的默认实现GCyclic

但我的GCyclic例子不正确。T3从上面使用

很清楚为什么rot等同于id这里。grot向下递归 的(:+:)结构,T3直到遇到基本情况grot U1 = U1

有人建议#haskell使用构造函数信息,M1因此grot可以选择下一个要递归的构造函数,但我不确定如何执行此操作。

是否可以生成所需的CyclicusingGHC.Generics或其他形式的 Scrap Your Boilerplate 实例?

编辑:可以CyclicBounded和写Enum

但是(原样)这是不令人满意的,因为它需要所有Bounded,EnumEq. 此外,Enum在某些情况下,GHC 无法自动导出,而更健壮的Generic可以。

0 投票
1 回答
110 浏览

haskell - 派生实例 Typeable 与上下文

我正在编写处理 HTTP 请求的函数集,并且需要创建一组异常来处理失败。这里是

其中WrongURIException对应于格式ConnException错误的 uri、TCP 堆栈中的错误和 RequestException 以处理具有非 2xx 响应代码的响应。在第 3 行声明之前instance Exception,我应该派生 Typeable 但我迷失了类型。我该怎么办?