Dec. 28th, 2011

juan_gandhi: (Default)
в прошлом году, в разгар хануки, я была в абсолютном шоке -- ни в одном из ближайших пяти-шести магазинах (аптеки, супермаркеты, world market store, party store) я не смогла найти ханукальные свечки (у нас дома неожиданно кончились). Спасла меня свекровь, у которой был запас из джуйки.

А впрочем, на ту же тему - в Беркли на днях суд решил, что группа мусульман, херасящих на улице проходящих евреев, спрашивающих их, are you a Jew - имеют право, первая поправка.

Конечно, вопрос невинный; даже Кисинджер однажды задавал такой вопрос Обозревателю Валентину Зорину.

Представьте только на минутку, что они подобный вопрос задают проходящим неграм. Are you black? И что бы им за это было.

Или стояли бы на улице евреи, и спрашивали бы прохожих - are you Muslim?

Но всё равно, уж лучше это, чем поминать Россию. Ни хера там, по-моему, не выйдет; бандит Путин прав - честные люди там в глубоком меньшинстве.
juan_gandhi: (Default)
это я про мапредьюс, конечно

Короче, с матоверфлоу меня навели на Bird-Patterson, Generalised Folds for Nested Datatypes (гадкий гугл линк не даёт, а даёт свой, с редиректом), кроме того, в скальном мейллисте Тони Моррис навёл на блог Торре-Борре, essence of iterator pattern, а оттуда линк на смешную статью двух оксфордских теоретиков, The Essence of Iterator Pattern, где вся наука и зафигачена, правда, в хаскельной форме, но со ссылками и на Моджи, и на Вамплера, и на всех-всех-всех.

А также узнал по ходу, что бинарное дерево (будучи неподвижной точкой уравнения t=1+t2) является корнем шестой степени из единицы, и поэтому (как пишут Бласс и Ловир), бинарное дерево в седьмой степени изоморфно самому себе (тут можно и малую теорему Ферма помянуть). Это возвращаясь к квадратному уравнению из моего предыдущего поста.

Оксфордские ещё пишут про логарифмируемые типы; надо будет прочитать ещё раз.

Смысл апликативных функторов, которыми лучше манипулировать, чем монадами, потому что ну типа траверсировать проще...

да и вообще, когда мы в скале пишем код типа как здесь, то это и есть самый цимес.

На самом деле, шо за монаду возвращает тот же word count в каком-нибудь дурацком примере из хадупа, у меня пока ответа нет; похоже, что он вертает List[Integer]. Но это фигня.
juan_gandhi: (Default)
Вчера по радио учили жить согласно учению Стива Джобса. "Старайтесь быть собой" (ну, это из Пера Гюнта), "ходите голодными"... бля, да на месте Стива Джобса я б язычок прикусил, или, скорее, объяснил бы урби эт орби, ("ёрби эт орби", как выражаются тут у нас по радио) что НЕ НАДО следовать примеру Джобса, и следовать советам Джобса тоже, хм, тот ещё вопрос, надо ли. Ну если только не хотите заработать премию Дарвина (кстати, Джобсу её что-то не присудили).

Причём, я бы ещё задумался и насчёт следования советам Иисуса Христа, но тот по крайней мере не учил следовать его примеру - по воде шлёндать да воду в вино превращать; ведь на самом-то деле ему распятие было примерно как нам вырвать зуб без наркоза, через неделю уже всё прошло и забыто.

Но я отвлёкся. Дисклеймер - Христа я очень уважаю, и советы его ценю.
juan_gandhi: (Default)
Пересказываю на пальцах.

Список элементов типа А - это, как мы знаем, неподвижная точка функтора X ↦ 1 + A×X - берём тип, и строим новый тип, это или точка, или пары (a,x). На хаскеле это пишут в виде data ListF x = Nil | Cons a x.

Этот функтор называют ListF в связи с тем, что список является его неподвижной точкой, по-моему, довольно безосновательно.

Определение. Если есть эндофунктор T, алгеброй над T называется объект X и функция a: T[X] → X. Если бы T был монадой, нужны были бы ещё свойства, а так нет. Алгебры образуют категорию; функция f: X → Y из алгебры (X,a) в алгебру (Y,b) задаёт отображение таких алгебр если композиция {Т[f];b}: T[X] → T[Y] → Y равна композиции {a;f}: T[X] → X → Y.

И вот если наш функтор - это ListF, то среди алгебр есть инициальная, с единственным отображением в любую другую алгебру. Объект, на котором построена эта алгебра, является неподвижной точкой функтора (довольно очевидно, но можно и помянуть теорему Ламбека).

Этот объект - тип списков, List[A], выражаясь по-скальски.

То, что тип списков является инициальной алгеброй, можно выразить в простых терминах.

Если есть f: 1 + A×X → X, что эквивалентно паре f0: 1 → A и fa: A×X → X, т.е. начальной точке f0∈X и действию A на X, то имеется каноническое отображение алгебр foldf: List[A] → X.

Да, это и есть fold.

Вот пример. Возьмём A ≡ Int; и возьмём алгебру, где объект тоже X ≡ Int, а действие состоит из f0 = 0, fa(n,m) = n + m.

Теперь как бы очевидно, что по свойству foldf(.) = 0 и foldf((a0,a1,...,an)) = a0 + foldf((a1,...,an)), получаем foldf((a0,...an)) = Σai.

Это всё достаточно разборчиво? Элементарно? Или требуются подробности? Я как-то не ощущаю.

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    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2025 08:26 pm
Powered by Dreamwidth Studios