我有一个组合子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)
用简单的英语,我可以将其描述C为fmap实例分发的产品类型。
我在这里的实现对我的目的来说很好,但我想知道在haskell或类别理论行话中是否有这个组合器的正确名称,以便我可以向这个库的未来用户投射它的作用,甚至如果存在,请改用现有代码。
这个组合器已经有名字了吗?
它是一个函子积,在库的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 g并Product f g只函子如果f和g都函子为好。)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |