这个 Functor 组合器有名字吗?
Does this Functor combinator have a name?
我有一个组合器 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)
用简单的英语,我可能会将 C
描述为 fmap
实例分发的产品类型。
我在这里的实现很好地满足了我的目的,但我想知道这个组合器在 haskell 或类别理论术语中是否有合适的名称,以便我可以向未来的用户展示这个库的作用,或者如果存在的话,甚至可以使用现有代码。
这个组合子已经有名字了吗?
它是 functor product,在 base
库的 Data.Functor.Product
模块中定义。来自 link:
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)
(准确的说,两者都只是更高种类的产物,不一定是函子,但是C f g
和Product f g
只是函子,如果f
和g
也是函子。)
我有一个组合器 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)
用简单的英语,我可能会将 C
描述为 fmap
实例分发的产品类型。
我在这里的实现很好地满足了我的目的,但我想知道这个组合器在 haskell 或类别理论术语中是否有合适的名称,以便我可以向未来的用户展示这个库的作用,或者如果存在的话,甚至可以使用现有代码。
这个组合子已经有名字了吗?
它是 functor product,在 base
库的 Data.Functor.Product
模块中定义。来自 link:
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)
(准确的说,两者都只是更高种类的产物,不一定是函子,但是C f g
和Product f g
只是函子,如果f
和g
也是函子。)