juan_gandhi: (Default)
[personal profile] juan_gandhi
Кому-то это всё давно известно, конечно. Типа Куздры. Эх, когда уж я научусь программировать.

Кароче. Сегодня выяснилось, что List - не тип, а функтор. А всякий List&X> - уже тип. Если Х - тип.

И "длина списка" - не функция, а естественное преобразование. Natural transform. Шоб вы думали, а! Век живи, век учись.

Ну и, к примеру, "обойти всё дерево" - это тоже не функция, а естественное преобразование.

И я ещё не понял, что такое методы у типа. Пока не понял.

Date: 2006-11-08 07:15 am (UTC)
From: [identity profile] observarius.livejournal.com
Куздры... которая "глокая" или которая в ЛАМПе сечет?

Как раз совета ищу (сильно долгоиграющего и не одного)....

Date: 2006-11-08 03:01 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
[livejournal.com profile] kouzdra - авторитетнейший источник знаний.

Date: 2006-11-08 07:48 am (UTC)
From: [identity profile] spamsink.livejournal.com
Пробельчики ставим после < или заменяем его на &lt; - а то пропадать будут. Не забываем пользоваться Preview.

То, что длина списка - не функция, а естественное преобразование, известно каждому программисту на Перле. Не любишь, поди, Перла-то?

К какому типу преобразует дерево естественное преобразование "обойти всё дерево"?



Date: 2006-11-08 08:07 am (UTC)
From: [identity profile] cema.livejournal.com


+1.



К типу "обойдённое дерево". ;-)

Date: 2006-11-08 03:04 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Спасибо.

К списку?

Date: 2006-11-08 03:28 pm (UTC)
From: [identity profile] spamsink.livejournal.com
К списку?

Ах, вы в этом смысле... Ну, видимо да, вполне естественное преобразование: ведь любое дерево в душЕ - скип-лист.

Date: 2006-11-08 03:40 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Не соглашусь. Лист, даже если он и скип лист, линейно упорядочен. А дерево - нет.

Date: 2006-11-08 03:56 pm (UTC)
From: [identity profile] spamsink.livejournal.com
Дерево линейно упорядочено как минимум тремя способами одновременно: препорядком, инпорядком и постпорядком (или как они там по-русску). Выбор одного из этих упорядочений, видимо, и считается преобразованием.

Date: 2006-11-08 04:52 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Ой не надо вот этого. "Тремя способами одновременно". У дерева один порядок - отец-сын. Всё. Остальное - различного вида функторы, превращающие дерево в линейный порядок.

Date: 2006-11-08 03:44 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Правда? Программисты на перле это знают? А почему не говорят? Вот что гугл находит на эту тему:
"Natural transformation is a process by which bacteria take up ... using a series of Perl scripts, "

Ты сам-то на перле пишешь? Вот у [livejournal.com profile] avva спросим, часто ли ему в перле попадаются эндофункторы, монады, инициальные алгебры и естественные преобразования. (И катаморфизмы в форме бананов.)

Date: 2006-11-08 03:51 pm (UTC)
From: [identity profile] spamsink.livejournal.com
Не говорят - потому что это у них на уровне подкорки. Использование списка (он же массив) в скалярном контексте натуральным образом преобразует его в его длину.

Date: 2006-11-08 04:54 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Типа рентгена Ивана Грозного. А сплющивание списков? Тоже естественное преобразование на перле?

Date: 2006-11-08 05:49 pm (UTC)
From: [identity profile] spamsink.livejournal.com
Типа рентгена Ивана Грозного.

Сложение и умножение, по-твоему, тоже были типа рентгена Ивана Грозного до изобретения теории групп?

Сплющивание списков - тоже. Это ж сложение.

Date: 2006-11-08 09:14 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Ну не скажи, не скажи. С монадной точки зрения так скорее умножение.

Теперь перейдем к Перлу. Каков в Перле тип у списка? Ага... Тип - "список". Перл не знает разницы между составлением списков и декартовым произведением.

Date: 2006-11-08 09:33 pm (UTC)
From: [identity profile] spamsink.livejournal.com
Пардон, в Перле list flattening означает другое.

Я к тому, что идеи (рентген Ивана Грозного) как ты говоришь, были известны давно, а какой abstract nonsense (см.) под них подвести - это уж как кому заблагорассудится.
(deleted comment)

Date: 2006-11-08 03:05 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
О! Я уже писал: программисты, изучайте теорию категорий. А то Фицпатриками станете.
(deleted comment)

Date: 2006-11-08 03:39 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Кнут, конечно, тоже хорошие книжки написал - но они не помогают понять суть дела.
(deleted comment)

Date: 2006-11-08 03:46 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Кнут - популярное знание. На интервью - бесценно. А знание Хаскела ещё никому на интервью не помогало. Только мешало. Написано у человека в резюме, мол, Хаскел. Спросишь его что-нибудь, типа напиши бесконечную последовательность Фибоначи... ну и это. Или мой любимый вопрос студентам, у которых Пролог в резюме присутстсвует: сложите два числа в прологе.

Так что для поступления лучше читать Кнута.
(deleted comment)

Date: 2006-11-08 04:56 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Кто ж мешает заняться самообразованием...

Date: 2006-11-08 12:58 pm (UTC)
From: [identity profile] furia-krucha.livejournal.com
List<A> это не функтор. Это инициальная алгебра функтора X |-> 1 + A*X.

Date: 2006-11-08 03:38 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Я не говорил такого, что List<A> - функтор. Я говорил, что List - функтор, да ещё и моноидальный при этом.

Но что инициальная алгебра, в смысле - ноль в категории "автоматов над А" - как то не задумывался; спасибо за хинт, ознакомился заодно с катаморфизмами и с бананами. С категорной точки зрения это всё не особо сложно, но... но красиво.

Как так получается, что эти два эндофунктора, ака инициальные алгебры (список и дерево), оказываются как бы в основе всего? А другие размерности? Или эти две алгебры и отражают какие-то фундаментальные свойства человеческого мышления?

Date: 2006-11-08 06:48 pm (UTC)
From: [identity profile] furia-krucha.livejournal.com
Что за бананы?

Как так получается, что эти два эндофунктора, ака инициальные алгебры (список и дерево), оказываются как бы в основе всего?
Есть ещё финальная ко-алгебра того же функтора, который приводит с спискам. Это "streams" --- бесконечные списки, ну и набор естественных операций естественно другой.

Date: 2006-11-08 09:18 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Бананы - это такие скобки, (| |), определяющие катаморфизм (смешное слово).

Насчет стримов и, очевидно, итераторов - спасибо!!! Открываются мои глаза на устройство вселенной.

Date: 2006-11-08 09:41 pm (UTC)
From: [identity profile] furia-krucha.livejournal.com
Коба-наны и котаморфизмы.
(deleted comment)

Re: глупый вопрос

Date: 2006-11-09 03:31 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Я не знаю. Я тут где-то потерялся. Не знаю. Это вообще не к монадным ли коалгебрам, часом, относится? Ведь метод - это же не функция, он может менять состояние объекта. Надо разобраться.

Re: глупый вопрос

Date: 2006-11-21 06:59 pm (UTC)
From: [identity profile] malaya-zemlya.livejournal.com
ИМХО Методы, это просто функции с подразумеваемым параметром this. TxA -> TxB (где T - тип соответствущего класса)
Никакой хитроумной абстракции в кат.теории, кажется, им не соответсвует. Отсюда имеем старинный парадокс "в С++ квадрат не является прямоугольником"

А вот интересный вопрос в тему: что-такое ко-монады? Т.е. берем Хаскелловские монады, переворачиваем все стрелки и получаем ...? Предполагаю, что inheritance.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

May 2025

S M T W T F S
    1 2 3
456 7 8 9 10
11 121314151617
181920 21 222324
25 262728 2930 31

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 1st, 2025 12:09 pm
Powered by Dreamwidth Studios