我有一个组合器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或者类别理论的行话中这个组合子是否有一个合适的名称,这样我就可以向这个库的未来用户投射它的作用,或者甚至使用现有的代码来代替。
这个组合子已经有名字了吗?
发布于 2020-02-22 22:54:04
它是一个functor product,在base库的Data.Functor.Product模块中定义。从链接:
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)(准确地说,两者都只是高级类型的产品,不一定是函数式的,但如果f和g都是函数式的,那么C f g和Product f g只是函数式的。)
https://stackoverflow.com/questions/60353359
复制相似问题