Комоноиды упоминаются, например, в < / а>:
Из-за отсутствия нетривиальных комоноидов в Haskell мы можем ограничиться требованием Functor, а не какого-либо класса Coapplicative.
После небольшого поиска я нашел ответ StackOverflow, который немного больше объясняет это с законами. что комоноиды должны удовлетворить. Думаю, я понимаю, почему в Haskell есть только один возможный экземпляр гипотетического класса типов комоноидов.
Таким образом, чтобы найти нетривиальный комоноид, я полагаю, нам придется поискать в какой-то другой категории. Конечно, если у теоретиков категорий есть название для комоноидов, то есть и некоторые интересные. Другие ответы на этой странице, похоже, намекают на пример с Supply
, но я не мог найти ни одного, который все еще удовлетворяет законам.
Я также обратился к Википедии: есть страница для моноидов, которая не ссылается на теорию категорий, которая кажется мне адекватным описанием класса типов Haskell Monoid
, но «комоноид» перенаправляет на теоретико-категориальное описание моноидов и комоноидов вместе, которое я не могу понять, да и интересных примеров пока не видно.
Итак, мои вопросы:
- Можно ли объяснить комоноиды в терминах, не относящихся к теории категорий, как моноиды?
- Каков простой пример интересного комоноида, даже если это не тип Haskell? (Можно ли найти кого-то в категории Клейсли над знакомой монадой Haskell?)
edit: Я не уверен, что это на самом деле теоретически верно по категориям, но то, что я представлял себе в скобках вопроса 2, было нетривиальными определениями delete :: a -> m ()
и split :: a -> m (a, a)
для некоторых конкретных Тип Haskell a
и монада Haskell m
, которые удовлетворяют версиям комоноидов со стрелками Клейсли в связанном ответе. Другие примеры комоноидов по-прежнему приветствуются.
Z_n
дляa
и[]
дляm
, и мои операторы:delete _ = []; split x = [(0, x), (1, x+1), ... (n-1, x+n-1)]
(все добавления по модулю n). Как проверить, соблюдаются ли законы? Скажем, я хочу проверить этотidL $ first delete $ split x = x
, как мне поднять его на[]
монаду? - person n. 1.8e9-where's-my-share m.   schedule 25.05.2014