Похожие чаты

@Electrosnail я вот читаю про категорию Hask, и она определяется

так, что объекты в ней - типы, а стрелки - (->).
Я рассуждаю так, что если co-X, это X, где все стрелки развёрнутый в обратную сторону, то с Hask получается именно так, что (f: a -> b) => (co(f): b -> a).

Здесь ошибка в том, что Со - это не просто переворачивание стрелок?

2 ответов

13 просмотров

Понятие двойственной категории чисто формально, в категории Hask^* морфизм из a в b - это отображение из b в a в Hask. Двойственные категории были придуманы по той причине, что многие функторы переворачивают направление стрелок. Один из самых типичных функторов - это функтор кольца непрерывных функций на пространстве. Если у вас есть непрерывное отображение пространства X в пространство Y, q : X -> Y, а C(X) и C(Y) - кольца непрерывных функций, то C(q) - это отображение из C(Y) в C(X) (получаемое композицией функции на Y с q, f(q(.)) - это функция на Y, получаемая из функции f(.) на X, точка из X сначала приезжает на q в Y а потом от нее берется функция). Это называется "обратный образ". Таким образом, C - не совсем функтор, он оборачивает стрелочки. Сначала такое называли "контравариантный функтор", а потом решили, что можно сказать, что это обычный, "ковариантный" функтор, но из двойственной к Top категории (или, наоборот, из Top в двойственную к Ring). Понятие двойственной категории чисто формально (вроде?)

Если в терминах класса Category, то Hask есть instance Category A где newtype A a b = a -> b, а Hask* есть instance Category CA где newtype CA a b = b -> a. При этом ваш op на функциях действует как перепаковка newtype'ов (то есть coerce) Всё, что записывается в двойственной категории можно записать и в исходной, перевернув стрелки. В этом смысле различия чисто формальные. Но они есть. Например, тип композиции (с точностью до newtype будет `(c -> b) -> (b -> a) -> c -> a``` Не знаю, стало ли что-то понятнее.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Hi. Do we have a raid bot? Why nobody doing raids on X? Even RH mentioned this and nobody paying attention...whats the channel for hex memes? If mods cant run raids just insta...
H
31
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
блеать, почему так?? где в роутере это исправляется?
Арсен Маньяков 🇦🇲
16
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
🌊 Ocean Nodes Dashboard Update 🚀 Hey, Oceaners! First off, a massive round of applause 👏to all of you for the amazing engagement since we launched Ocean Nodes. In just a few ...
KreigDK | Never DM first🌊
3
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
люди, которые используют flameshot, к вам вопрос. Можно-ли поставить хоткей на создание скриншота? В программе есть отдел "горячие клавиши", но там все для редактирования, скр...
ThunDer104
11
Карта сайта