juan_gandhi: (Default)

"From Mathematics to Generic Programming"

I had ordered this book a couple of years ago, but by my mistake it was delivered to my old Californian address. Just received it eventually, about a month ago.

The book has 14 chapters. I don't know who is Daniel Rose, but everybody (except GenZ) knows Stepanov, who is, I think, an actual founder of map/reduce (but who cares, right?). He has an education in "abstract algebra", as I understand (S.Lang's "Algebra" book is what I see throughout this book), and, since he spent his life programming every since, he didn't add any knowledge above, and the book mixes his "Mekhmat Algebra of year 1972" level with programming practices of 1990-s.

I remember I was doing a similar algebra, but in my case category theory was already looming somewhere above, and, many years later, I figured that all that cheap shit that I was doing in homological algebra can be expressed in about a couple of pages if we show that a couple of important functors are adjoint. Same here: "similarities", mentioned here and there throughout the book are just functors between some abelian categories. OTOH, model theory was almost mentioned.

Still, a good reading, really good, especially for kids.

Also, the book contains a lot of stories from the history: How Euclides got pissed off by his contemporary idiots, how Lobachevsky got pissed off by his contemporary idiots, how Galois pissed of some idiots like Cauchy and eventually he got pissed off and killed by some now forgotten asshole.

We start with finding GCD, and we spend the whole book returning to finding GCD, eventually wrapping up with the explanation of how RSA works. GCD everywhere. Since there are c++ code examples and exercises, a lot of time is dedicated to explaining how code works, and how it should be written. The general approach reminds me what they taught us in the 5th year: performance! efficiency! minimalistic code with no extra instruction! Ok, we need that efficiency for doing RSA, of course, especially finding a couple of good primes. And all these things are good exercises if you are learning, or just want to have fun.

So, I recommend this book as a casual weekend or vacation reading to programmers that for some reason skipped algebra - and also as a good algebraic programming tutorial to the kids who are curious to learn something mathematically deeper than Java OOP or Scala FP.

juan_gandhi: (Default)
Вот возьмём-ка монадку X2, из моего поста.

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

Так вот, а какие ж бывают алгебры над такой монадой? Нам надо, чтобы был f: A×A → A, соблюдающий условия:

f(a,a) == a

f(f(a1,a2),f(a3,a4)) == f(a1,a4)

Мне вот что-то сдаётся, что в условиях булевости и точечности (ну, скажем, в множествах) только проекция удовлетворяет такому условию. p1(a1,a2) = a1; p2(a1,a2) = a2.

Хотите попробовать порешать? По-моему, прикольная задачка. Хотелось бы найти, конечно, необходимые условия, при которых это так. Точечность на фиг не нужна, но булевость...
juan_gandhi: (Default)
Вчера меня [livejournal.com profile] nivanych ткнул носом в прекрасное - коалгебры.

Короче, взять хоть какой функтор F, коалгебрами называются стрелки вида X -> FX с понятными морфизмами, квадратами



(btw, used my presheaf:)

Ну коалгебры и коалгебры: если взять знакомую монаду , строящую списки в качестве свободных алгебр, то для неё свободные (инициальные) алгебры представляют собой списки (над алфавитом А), а терминальные коалгебры... что там будут за терминальные коалгебры? Бесконечные потоки символов из алфавита А? Похоже на то.

Ну это была интродукция. А теперь рондо каприччиозо.

Возьмём категорию частично-упорядоченных множеств (посетов), и определим каузальный объект как такой посет, у которого есть начало и конец (0 и 1). Почему каузальный - начало есть "причина всему", а конец есть "вывод из всего".



Определим такой функтор - последовательное присоединение каузального объекта к самому себе, началом к концу, как, э... нет, не будем вдаваться в анальные аналогии. Последовательное соединение.

Так вот, континуум есть терминальная коалгебра соединения каузальных объектов.

Как это так? А вот, если возьмём отрезок вещественных чисел (в Москве можно взять отрезок действительных чисел), то он является каузальным объектом, и является коалгеброй над таким функтором: соединение двух отрезков подряд даёт каyзальный объект. Более того, т.к. это соединение изоморфно исходному отрезку, то он является неподвижной точкой.

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

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

September 2025

S M T W T F S
 1 2345 6
78 9 10 111213
14 151617 181920
212223 24252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 27th, 2025 09:12 pm
Powered by Dreamwidth Studios