- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
type Foo = {
x :: Int,
y :: Int
}
type Bar = {
x :: Int
}
foo :: Foo
foo = {x:1,y:2}
bar :: Bar
bar = foo
Could not match type
()
with type
( y :: Int )
为什么这不可能?
我无法使用
type Bar a = {
x :: Int | a
}
并且不想重新创建记录
bar = {x : foo.x}
unsafeCoerce 是唯一的选择吗?
使用 unsafeCoerce
可能会出现什么问题?
最佳答案
如果您想编写处理仅具有某些特定字段的记录的函数,那么您可以使用开放行:
bar :: forall r. { x :: Int | r } -> { x :: Int | r }
bar rec = rec
这仍然与 Foo
和 Bar
同义词兼容。
但是,如果这也不好,并且您只是想“忘记”y
,那么 unsafeCoerce
应该可以使用,只要您只强制执行Foo
到 Bar
,并且不再返回。
我强烈建议使用别名unsafeCoerce
,而不是直接使用它:
forget :: Foo -> Bar
forget = Unsafe.Coerce.unsafeCoerce
即使你认为自己有原则地使用它,直接使用它也很容易出错。
就我个人而言,我只是创建一个没有字段的新记录,即使它涉及一些样板文件。
关于purescript - 有没有办法在不使用 unsafeCoerce 的情况下获取子记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36245469/
在 Haskell 中,有一个名为 unsafeCoerce 的函数。 ,这会将任何东西变成任何其他类型的东西。这究竟是用来做什么的?比如,为什么我们要以这种“不安全”的方式将事物相互转化? 提供一个
我有类型级别列表的见证类型, data List xs where Nil :: List '[] Cons :: proxy x -> List xs -> List (x ': x
type Foo = { x :: Int, y :: Int } type Bar = { x :: Int } foo :: Foo foo = {x:1,y:2} bar :: Ba
我听说 Haskell 中的各种类型系统 hack(unsafePerformIO、Template Haskell、任意等级多态性...)可用于强制不同的类型,但我还没有看到显式的实现。至少在 GH
我正在用 Int8 和 Word8 尝试 unsafeCoerce,并且发现了一些令人惊讶的行为(无论如何对我来说)。 Word8 是一个 8 位无符号数,范围为 0-255。 Int8 是一个有符号
一些库使用unsafeCoerce来临时满足约束: class Given a where given :: a newtype Gift a r = Gift (Given a => r) give
我现在正在使用极其可怕的函数 unsafeCoerce 。幸运的是,这并不是为了任何重要的事情,但我想知道这是否是该函数的安全使用,或者是否有其他方法可以解决其他人知道的这个特定问题。 我的代码如下:
我有一个新类型来表示休斯的列表(即列表构造): newtype Hughes a = Hughes {unHughes :: [a] -> [a]} 有一些功能可以处理它: mkHughes :: [
在 Coercible 的当前实现中我们可以量化“代表性保留类型构造函数”,以在下面的代码中提取更安全的证明 #!/usr/bin/env stack -- stack --resolver lts-
说我有 {-# LANGUAGE GADTs #-} import Unsafe.Coerce data Any where Any :: a -> Any type Index = Int
我相信以下内容与 Set.mapMonotonic coerce 一样安全.即可能发生的最坏情况是我将打破 Set不变量 a或 b有不同的Ord实例: coerceSet :: Coercible a
我正在使用 Data.Binary 中的 Get monad 从包含有符号 16 位整数的二进制文件中读取结构。我当前的代码如下所示: data DetectorStats = DetectorSta
使用 conkin包裹:https://hackage.haskell.org/package/conkin 我希望能够采取任何Conkin.Traversable并将其转储到 Tuple留下索引到
我是一名优秀的程序员,十分优秀!