Jul. 25th, 2012

juan_gandhi: (Default)
Вчерась весь день протрахался, вставляя в разные куски кода чеки и балансы - мол, если такой-то атрибут в конфигфайле отсутствует при его сохранении, то бросаем на хрен эксепшен...

К сожалению, в другом коде на этот эксепшен кладут с прибором реагируют, превращая его в Left("ой блин: " + exception.getMessage); т.к. эта операция вызывается для целой коллекции конфигфайлов, то нам эти все ответы некуда девать (аппликативам не обучены) - поэтому плохие ответы вообще игнорируются - ну это у нас народный обычай, чтоб не было ошибок в логах, мы их не замечаем.

Ну и это, поправил, согласно аппликативам: проинтегрировал все левые части, и в конце групповой операции стал бросать эксепшен.

Полегчало.

А главное, всё одни и те же старые песни - или насрать на ошибку, или мы вообще не проверяем. Философская реакция на всё выражается чаще емейлом (мне) - "ты должен в конфигфайле иметь то и это", или ответом на звонок кустомера ("откройте редактором такой-то файл и впишите в него такую-то строку") - как будто программа сама, найдя, что атрибута нету, не в состоянии сказать, что нужен такой-то атрибут, и они бывают такими-то.
juan_gandhi: (Default)
(да, перепост.)

Originally posted by [livejournal.com profile] drugoi at Стинг в Москве выступил в защиту Pussy Riot

© REUTERS

25.07.2012, Россия | Всемирно известный музыкант Стинг, который выступит в Москве в среду вечером и в Петербурге в пятницу, присоединился к защитникам Pussy Riot и осудил российские власти за то, что девушки содержатся в тюрьме, сообщает Газета.ру со ссылкой на сайт Amnesty International:

«Это ужасно, что музыкантам из Pussy Riot грозит тюремное заключение сроком до семи лет лишения свободы. Инакомыслие является законным и неотъемлемым правом в любой демократии, и современные политики должны принять этот факт с терпимостью. Чувство меры и чувство юмора – это признак силы, а не признак слабости. Конечно, российские власти снимут эти ложные обвинения и позволят женщинам, этим художникам, вернуться к своим семьям и своим детям».

juan_gandhi: (Default)
Итак, если у нас имеются две категории, C и D, и два функтора, F: C → D и G: D → C, мы говорим, что эти два функтора образуют сопряженную пару, F ⊣ G если имеется взаимно-однозначное соответствие
F(X) → Y  <====>  X → G(Y)


Для сопряженной пары мы вывели два естественных преобразования, η: IdC → F;G и ε: G;F → IdD.

Оказывается, если есть такие два естественных преобразования, для пары функторов, то они сопряжены.
Ну и правда, если есть f: F(X) → Y, то приложим к нему G, получим G(f): G(F(X)) → G(Y), и соединим это с ηX: X → G(F(X)), получим ту самую X → G(Y).

То же самое, по симметрии, проделывается и в другую сторону. Вообще, у меня тут половина рассуждений лишняя, потому что зеркальная симметрия ж (никаких бозонов).

Наши ηX и εY обладают чудесными свойствами:

   


Эти два чудесные свойства получаются в результате применения тех самых соответствий α и β, что были нарисованы в первой серии - попробуйте сами.

У нас есть теперь всё для монады и комонады.

Монада делается путём композиции, T = F;G; это функтор T: C → C. В качестве монадной единицы годится уже появлявшаяся у нас η, а в качестве монадного умножения (a.k.a. flatten) возьмём μX = G(εF(X)): G(F(G(F(X)))) → G(F(X)).

Единица оказывается единицей относительно монадного умножения, и умножение оказывается ассоциативно - всё это следует из описанных выше свойств сопряженных функторов.

Симметрично мы можем определить комонаду, путём композиции U = G;F.

Пример.

Возьмём категории C=Set и D=Set×Set - множества и пары множеств, и два функтора, Δ(X) = (X,X) и Π((X,Y)) = X×Y.

Первый функтор - диагональ, он множеству сопоставляет пару, состоящую из двух экземпляров оного, а второй паре множеств сопоставляет декартово произведение.

Эти два функтора сопряжены, Δ ⊣Π.

А именно, если есть (f1,f2): (X,X) → (Y1, Y2), то это задаёт отображение X →Y1×Y2, и наоборот, отображение в декартово произведение Y1×Y2 задаёт пару отображений, по компонентам.

Какая ж тут у нас монада? Монада берёт множество X и сопоставляет ему X×X. Монадная единица - диагональ (η(x) = (x,x)), а монадное умножение, X×X×X×X → X×X строится, согласно картинкам из начала этой части, из ε: (Y1×Y2, Y1×Y2) →(Y1,Y2) - проектированием по первой и последней координатам. μ(x1,x2,x3,x4) = (x1,x4).

Кто любит симплициальные категории, увидит тут различные краюшки и рёбрушки, но это ладно, это мы лучше не будем трогать.

"Практический смысл" в программировании у этой монады вот какой: есть двоичный флаг; и наши данные от него зависят - в одном случае вызов возвращает Y1, а в другом Y2. Ну и если у нас есть функция, зависящая от того же флага, то нам надо как-то комбинировать и сплющивать; это же Reader Monad, сведённая к двоичному флагу. Ну вот эта монада и есть.

Вопросы?

(Завтра продолжу, хочу показать, как из монады можно построить сопряженную пару, и не одну.)

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

September 2025

S M T W T F S
 1 23456
78910111213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 2nd, 2025 11:37 pm
Powered by Dreamwidth Studios