是否有像继续箭头变压器的东西?

时间:2017-03-18 10:37:03

标签: haskell monad-transformers continuations arrows category-theory

ContT monad变换器有一个有趣的属性:如果有* -> *类型,例如Set,它具有明确定义的monadic操作,但不能有Monad实例由于某些约束(此处为Ord a),可以将其包装在ContTContT r Set)中以获取monad实例,并推迟它之外的约束,就像我们将Set注入ContT r Set时一样。 请参阅Constructing efficient monad instances on Set using the continuation monad

箭头有类似的东西吗?一个arrow transformer,允许包裹一个"几乎箭头"进入它,获得一个有效的Arrow实例,并将有问题的约束推迟到我们注入"几乎箭头"进去吧?

例如,如果我们有AlmostArrow :: * -> * -> *类型,我们通常会Arrow操作,但有约束,例如

arr' :: (Ord a, Ord b) => (a -> b) -> AlmostArrow a b
(>>>') :: (Ord a, Ord b, Ord c) => AlmostArrow a b -> AlmostArrow b c -> AlmostArrow a c

作为奖励,如果是,是否有一些漂亮的,通用的类别理论方法如何导出ContT和这样的箭头变换器?

0 个答案:

没有答案