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)
用简单的英语,我可以将其描述C
为fmap
实例分布的产品类型。
我在这里的实现对于我的目的来说很好,但我想知道在 haskell 或类别理论行话中是否有这个组合器的正确名称,以便我可以向这个库的未来用户投射它的作用,甚至如果存在,请使用现有代码。
这个组合器是否已经有了名字?
解决方案
它是一个函子 productData.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)
(准确地说,两者都只是更高种类类型的产物,不一定是函子,但只有当C f g
且都是函子时才是函子。)Product f g
f
g
推荐阅读
- javascript - Angular:获取文本框onclick按钮的值
- java - 可调用对象的执行顺序不一致
- api - Telegram Bot - 发送信息消息
- gerrit - 如何更改gerrit查询的限制数量
- javascript - 如何避免在javascript中的用户keyUp上打开多个boostrapDialog?
- c# - 如何设计 Unity 容器?
- reactjs - 如何在屏幕上显示我使用 react 推送到 firebase 的对象?firebase 中的对象如何被删除?
- angular - 角 6 'rxjs/Rx'; 可观察的 first() 不起作用
- php - 通过电子邮件发送 HTML 表中的 PHP MySQL 查询结果
- sql - SQL 操作数数据类型 datetime / varchar 对 sum 运算符无效