Есть ли какое-нибудь стандартное имя для конструктора типа F :: * -> * -> * -> *
с операциями
return :: x -> F a a x
bind :: F a b x -> (x -> F b c y) -> F a c y
то есть контравариантный функтор в первом аргументе и ковариантный функтор во втором и третьем? В частности, соответствует ли это какой-либо конструкции в теории категорий?
Операции вызывают
join :: F a b (F b c x) -> F a c x
операция, которая заставляет это казаться некой «категорией в категории эндофункторов», но я не уверен, как это можно формализовать.
РЕДАКТИРОВАТЬ: Как указывает Чи, это связано с индексированной монадой: с учетом индексированной монады
F' : (* -> *) -> (* -> *)
мы можем использовать конструкцию Аткей
data (:=) :: * -> * -> * -> *
V :: x -> (x := a) a
а затем определить
F a b x = F' (x := b) a
чтобы получить желаемую монаду. Я выполнил построение в Agda, чтобы проверить. Я все еще хотел бы знать, больше ли это однако известна ограниченная структура.
:=
.) - person Benjamin Hodgson♦   schedule 21.02.2018