这个 Functor 组合子有名字吗?

Sri*_*aic 3 haskell functor

我有一个组合子C和一个Functor instance定义如下:

data C f1 f2 a = C (f1 a) (f2 a)

instance
  ( Functor f1
  , Functor f2
  )
    => Functor (C f1 f2)
  where
    fmap g (C a b) = C (fmap g a) (fmap g b)
Run Code Online (Sandbox Code Playgroud)

用简单的英语,我可以将其描述Cfmap实例分发的产品类型。

我在这里的实现对我的目的来说很好,但我想知道在haskell或类别理论行话中是否有这个组合器的正确名称,以便我可以向这个库的未来用户投射它的作用,甚至如果存在,请改用现有代码。

这个组合器已经有名字了吗?

che*_*ner 7

它是一个函子积,在库的Data.Functor.Product模块中定义base。从链接:

data Product f g a = Pair (f a) (g a)

instance (Functor f, Functor g) => Functor (Product f g) where
    fmap f (Pair x y) = Pair (fmap f x) (fmap f y)
Run Code Online (Sandbox Code Playgroud)

(准确地,两者都只是一个产品更高kinded类型的,不一定函子,但C f gProduct f g只函子如果fg都函子为好。)