Date: 2013-04-19 07:13 am (UTC)
From: [identity profile] 109.livejournal.com
p6: log(a*b)=log(a)*log(b) - это ты погорячился.

Date: 2013-04-19 06:46 pm (UTC)

Date: 2013-04-19 07:17 am (UTC)
From: [identity profile] 109.livejournal.com
p7 - ни фига не понятно.

Date: 2013-04-19 06:47 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
чуток подправил; тут, конечно, нужна сопровождающая речь, мол есть взаимно однозначное соответствие между такими f и такими f'

Date: 2013-04-19 07:40 am (UTC)
garote: (Default)
From: [personal profile] garote
I must not be a regular programmer - because I'm still confused :D

Of course, I currently have my head buried in oceans of Javascript, so ...

Date: 2013-04-19 06:48 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
If you could point at the moment when you get confused... not at the first line, right? :)
And it kind of relates to JS too (beautiful language)

Date: 2013-04-19 07:55 am (UTC)
From: [identity profile] mstone.livejournal.com
3: из приведённых примеров Zero должна быть просто T, а не функция () => T.
4: у магмы ещё и единицы нету.
6: мне кажется, лучше не стесняться и сказать monoid homomorphisms: monoid functions создаёт ложное ощущение понятности.
7: непонятно кто такой свободный моноид, откуда он взялся, зачем он и почему он список.
8: почему reduce::List[A]->A, а не List[A]->B? Кто именно на этом слайде алгебра? Функция reduce?

Вот здесь хорошо описано как разные комбинации ассоциативности/идемпотентности/коммутативности выливаются в разные структуры данных.

По мелочи:

2: в третьем пункте = вместо ==, пробелы вокруг =, которых нет в других пунктах на слайде, и не хватает примера с правой единицей; в пятом пункте ++ вместо +; в шестом пункте нет примера с правой единицей

6: в третьем пункте умножение вместо сложения.

10: ++ для списка вместо + на предыдущих слайдах.

14: x Opx пробел пропущен.

Date: 2013-04-19 07:21 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Огромное спасибо!
6: я боюсь пугать публику - скаже homomorphism, у них веки смыкаются
7: тут да, нужно много сопровождающих слов; подумаю, можно ли выразить картинкой

За линк тоже огромное спасибо; свистнул картинку

Date: 2013-04-20 02:23 am (UTC)
From: [identity profile] mstone.livejournal.com
"Гомоморфизм" у неподготовленного человека действительно вызывает желание развидеть, заплакать и убежать, но "monoid functions" плохо тем, что уводить мысль совершенно в другую сторону. Это читается как "функции на моноидах" или "функции с моноидами", то есть функции из моноидов во что-то, вовсе необязательно в другие моноиды. Плюс слово "функция" у гипотетического programmistus vulgarius имеет скорее оперативную, а не декларативную ассоциацию. Лучше уж тогда "monoid mappings" или "mappings between monoids"

Date: 2013-04-20 04:29 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
О! Действительно. Так и сделаем.

Date: 2013-04-19 08:45 am (UTC)
From: [identity profile] sassa-nf.livejournal.com
"sum(Nil)=1; sum(list1+list2)=sum(list1)*sum(list2)"

sum(Nil)=0; sum(list1+list2)=sum(list1)+sum(list2)

вообще-то у свободного моноида нужно ещё определить, что делать со списком одного элемента.

Date: 2013-04-19 07:23 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Так это ж два разных моноида, один по умножению, другой по сложению

Date: 2013-04-20 07:30 am (UTC)
From: [identity profile] sassa-nf.livejournal.com
не знаю, это возражение по первому замечанию или по второму.

На слайде sum(Nil)=1, а должно быть 0, и умножение сумм, а должно быть сложение. Хотя, если считать, что sum - это просто название, а реализация равна product, то да.

По поводу второго - дык, если просто задать sum(Nil)=e, sum(x++y)=sum(x) # sum(y), то никогда нельзя вычислить, чему равно sum(List(1)), а потому и чему равно sum от любого непустого списка.
Edited Date: 2013-04-20 07:30 am (UTC)

Date: 2013-04-20 04:56 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Ну первое-то я поправил, спасибо; по второму вопросу - морфизм моноидов же не единственным образом задаётся правилами. Добавил пример.

Date: 2013-04-20 08:01 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
А как sum(List(1)) посчитать? Ну, можно разбить на sum(List(1)++Nil)=sum(List(1))+sum(Nil)=sum(List(1))+0=sum(List(1))

Какой слайд объясняет, как это делается? Я как-то не вкурю.

Вот если ввести sum(List(x))=x, то понятно.

Date: 2013-04-20 09:23 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Так это только для суммы; вообще-то говоря, речь шла о примерах морфизмов.

Date: 2013-04-20 09:37 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
мне кажется, это не только для суммы, а для любого морфизма из свободного моноида в любой другой моноид. Нет?

Date: 2013-04-20 09:41 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Хм, ну тут единица примазывается, а я типа не хотел шибко пугать. Я подумаю.

Date: 2013-04-19 10:59 pm (UTC)
From: [identity profile] vital-sol.livejournal.com
So, as I got it from the slides, Monoid is a common pattern?
Or Monoid is a pattern?
If not, what is Monoid?
I was hoping that by 2nd or 3rd slide I'd be able to answer that question.

Date: 2013-04-19 11:03 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Thanks; good point. Added a slide.

Date: 2013-04-22 09:10 pm (UTC)
From: [identity profile] pappadeux.livejournal.com


http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html

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
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 15th, 2025 06:41 pm
Powered by Dreamwidth Studios