问题标签 [newtype]
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中`data`和`newtype`之间的区别
我写这个有什么区别?
相对
haskell - 有没有办法在 GHC Haskell 中定义一个存在量化的新类型?
在(GHC)Haskell 中是否可以定义一个存在量化的新类型?我知道如果涉及类型类,则无法在字典传递实现中完成,但出于我的目的,不需要类型类。我真正想定义的是:
但 GHC 似乎并不喜欢它。目前我正在使用data Key t where Key :: !(t a) -> Key t
. 有什么方法(也许只是使用-funbox-strict-fields
?)来定义与上面的 newtype 版本具有相同语义和开销的类型?我的理解是,即使严格的字段未装箱,仍然会有一个额外的标签词,尽管我可能完全错了。
这不会导致我出现任何明显的性能问题。让我感到惊讶的是不允许使用新类型。我是一个天生好奇的人,所以我不禁想知道我拥有的版本是否正在编译为相同的表示形式,或者是否可以定义任何等效类型。
haskell - multi-parameter newtype faked with a tuple?
This is a dumb question that's been bugging me for a bit. Why can't I write a newtype with multiple parameters,
while the tuple version is just fine?
the former is much nicer in things like pattern matching.
haskell - 为 newtype 定义构造函数
我有一个类型
我四处寻找一种方法来指定新类型的构造函数。我意识到只能有一个,但我不明白为什么我可以指定它是什么。
例如,我可能只想将参数的前三个元素传递给PolyRing
值构造函数。
我尝试where
在 newtype 声明的末尾添加一个子句,但没有编译。
我也试过:
作为一个玩具的例子。我认为这应该做的是忽略 value 构造函数的参数并始终具有 value [2,3,5,7]
。代码编译,但我的“自定义”构造函数没有效果。
是否可以为新类型指定构造函数?
haskell - 有什么方法可以自定义 GeneralizedNewtypeDeriving 实例的一两个方法?
Haskell 的 GeneralizedNewtypeDeriving 机制很棒;对于那些没有看过的人,写一些类似的东西
将自动生成实例,例如,
但是,对于我的一个类型类,我想自定义一些方法。有没有办法覆盖或禁用 GeneralizedNewtypeDeriving 对这些方法所做的事情?typeclass 对一些基本的 DSL 指令进行编码,例如for
(循环)、parfor
(并行循环)、fcndef
(添加新函数)等,并且没有完美的方法将其拆分为多个 typeclass [然后自动派生一个,并手动编写另一个]。
haskell - 具有 RankNTypes 的新类型
如果我想声明一个newtype
值的类型类型被限制为具有类型类的实例,似乎我可以这样做:
GHC 编译得很好,但是当我尝试并实际使用ShowBox
with
我收到编译器错误
有没有办法使这项工作?
haskell - Haskell:类型安全同义词的新类型:使用两个构造函数有什么办法吗?
我想定义一个事物的多个版本,但具有不同的类型,以增强我程序中的类型安全性。例如,我有几种类型的双变量值,我想成为它们的实例,Num
但它们都应该是不同的类型。所以我所做的是用一个类型变量创建一个新类型,并在此基础上声明新类型。但是,我发现我现在必须一直使用这两个构造函数有点烦人。有没有办法解决?
谢谢你!
编辑:
为了扩展原始问题,我还想在模式匹配中使用类型名称,类似于
这也可能吗?
haskell - newtype 语句的含义
我有这样的声明:
因此类型State
为:
我无法理解其中的含义:
- 是
st
并且a
只是两种数据类型的占位符?正确的? - 该语句是否意味着 State 是一个以函数为参数的函数?
java - 用户定义的值类在 Java 中是什么样的?
通过与 Haskell 的比较,我想我了解 Scala 2.10 的新“价值类”功能newtype
:
我的问题是,值类如何出现在使用声明它的 Scala 包的 Java 代码中?值类是作为 Java 端的引用类出现的,还是被完全删除(因此作为它包装的类型出现)?换句话说,当 Java 涉及到源代码级别时,值类的类型安全性如何?
编辑
根据 SIP-15 文档(在 Daniel 的回答中链接),上面的代码不会编译,因为值类不允许有任何初始化逻辑,因为要么v
必须是明确的 val,要么Probability
必须有一个unbox
方法和一个相应的box
它的伴生对象上的方法,并且因为值类必须只有一个字段。正确的代码是:
然而,问题本身仍然有效。
haskell - 超载显示列表
我想要一个换行符分隔的表示,而不是通常的逗号分隔的表示,因为可能有新的数据类型:
我试图写这个 istance Show class
:
GHC 严重侮辱我。
有人可以尝试向我解释我该怎么办吗?