- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
Overlapping instances in Haskell when I'd expect it not to overlap due to constraints
(2 个回答)
Data.Vector.Binary overlaps Binary [a] instance
(1 个回答)
Functor supertype has conflicting instances
(1 个回答)
2年前关闭。
出于某种原因,GHC 似乎决定我的数据类型(带有两个类型参数)无缘无故地实例化 Bifunctor。
最有趣的是,这只是用来告诉我对于这种数据类型有 Functor 的重叠实例,因为我为任何 Bifunctor 提供了 Functor 的实例化(以及针对数据类型的特定实例)。但是,如果我尝试对其进行 bimap,它会告诉我没有 Bifunctor 的实例。
{-# LANGUAGE FlexibleInstances #-}
module BifunctorError where
import Data.Bifunctor
instance Bifunctor f => Functor (f t) where
fmap = bimap id
data Provenance p t = Provenance p t
-- Uncomment and try to compile: Overlapping instances ???
--instance Functor (Provenance p) where
-- fmap f (Provenance p x) = Provenance p (f x)
最佳答案
在寻找匹配的类型类实例时,GHC 只看头部,而不是条件。它作为辅助步骤匹配条件。所以当 GHC 正在寻找一个 Functor
例如,它看到的只是
instance (Don't care) => Functor (f t) where
instance (Don't care) => Functor (Provenance p) where
(Don't care)
bit 直到后来才开始发挥作用。所以你有一些重叠的实例,这是一个问题。
OverlappingInstances
,这本身就有点像兔子洞。
关于Haskell 独立决定为我的数据类型推断 Bifunctor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56121803/
我正在通过阅读本书来了解 Haskell Haskell Programming from First Principles, Allen & Moronuki . 在 Monad Transform
这个问题在这里已经有了答案: Overlapping instances in Haskell when I'd expect it not to overlap due to constraints
使用 Bifunctor 时,我们可以访问 first 和 second “map” 函数。所以基本上它是一个仿函数,允许我们以两种不同的方式进行 fmap。 Monoid 有类似的东西吗?一些概念允
rank2classes包提供了 Functor 的版本映射函数似乎是类型构造函数之间的自然转换。 按照这个想法,这里是 Bifunctor 的 2 级版本: {-# LANGUAGE RankNTy
Control.Lens.Iso 包含许多很棒的函数,用于将 Iso 提升为有用抽象的各种类型参数。例如: 映射 任意Functor contramapping Contravariant 仿函数 d
在以下内容中: import Data.Bifunctor import qualified Data.ByteString.Lazy.UTF8 as BLU safeReadFile :: File
如果我有一个 Bifunctor[A,A] 的实例bf,一个函数 f : A => A和一个 Boolean值(value) p : def calc[A, F[_,_]: Bifunctor](p:
我是一名优秀的程序员,十分优秀!