Паттерны vs ФП [из Посоветуйте книжку по ..]

Ushkvarok

понимаю, что бесполезно, но все же скажу
сейчас уже давно нормально начинать сразу с ФП

6yrop

кинь ссылку на источник этой картинки

Dasar

Шутка красивая, но строится на искажении знания и использует нарушение уровней общности. При использовании аналогичного нарушения для ОО, табличка выглядит ровно также: слева - паттерны, справа - ответ: объекты, объекты, объекты.
Паттерны - это о структуре взаимосвязей между блоками и слабо зависит от того, какие блоки используются для построения этой структуры(функции, объекты, процедуры, агенты, компоненты и т.д.). На ФП каждый паттерн имеет свою функциональную структуру.

Dasar

картинка правильнаяя
Это неверное утверждение. Возьмем первую строку: Single Responsibility Principle. Сам по себе переход на функции, никоим образом не страхует от нарушения этого принципа. ФП-программист, не понимающий этого принципа - ровно также располагает в одной функции всё сразу.

Ushkvarok

http://www.slideshare.net/ScottWlaschin/fp-patterns-buildstu...
2DarkGrey да, картинка утрированная конечно

6yrop

ФП-программист, не понимающий этого принципа - ровно также располагает в одной функции всё сразу.
Располагать или не располагать в одной функции, в этом вопросе проще отталкиваться от задачи, ситуации на проекте и здравого смысла. Паттерны лишнее звено. Это как разговаривать на естественном языке. Большинство людей разговаривают, не задумываясь о грамматических конструкциях.

Marinavo_0507

Большинство людей разговаривают, не задумываясь о грамматических конструкциях.
не очень хороший пример, так как очень часто весьма не просто понять, что хотел сказать человек

kokoc88

http://www.slideshare.net
Доклад на 200+ слайдов начинается с нереального баттхёрта на тему ООП. Мне почему-то начинает казаться, что все самые популярные статьи и книги на тему ФП начинаются именно так. Первая глава посвящается тотальному разгрому императивных (опционально ООП) языков с объяснением, какие они ужасные. Вместо этого лучше бы сразу разбирали 10 строчек кода

6yrop

Мне почему-то начинает казаться, что все самые популярные статьи и книги на тему ФП начинаются именно так.
ФП чаще всего идет от около академических кругов. А в академических кругах так принято, сначала надо описать недостатки других подходов, потом уже приступать к описание того, о чем хотел написать. Иначе в академических кругах про тебя подумаю, что ты не заботал тему.

apl13

ФП начинаются именно так. Первая глава посвящается тотальному разгрому императивных
Я, наверное, зря опять напишу, что функциональность и императивность ортогональные характеристики, да?

Dasar

функциональность и императивность ортогональные характеристики, да?
Это две ортогональные характеристики, но и ООЯ и ФЯ используют их обе. В ФП императивность появляется при вводе монад и их использовании в коде.

apl13

В ФП императивность появляется при вводе монад и их использовании в коде.
http://en.wikipedia.org/wiki/Scheme_%28programming_language%...

Dasar

Расшифруй. Намекаешь на императивность нечистых функций?

apl13

На то, что монады — третий перпендикуляр в этой диаграмме. :o
(1. Они чистые. 2. ФП императивны без них. 3. В неФП их ничто не мешает ввести.)

yroslavasako

Это как разговаривать на естественном языке. Большинство людей разговаривают, не задумываясь о грамматических конструкциях.
И тем не менее существует tvtropes.org и туда регулярно заглядывают. Говоришь, в естественной речи не бывает паттернов?

stm5872449

1. Они чистые.
Особенно монада IO.
В ФП императивность появляется при вводе монад и их использовании в коде.
Расскажи как использование монады Maybe делает код императивным.

apl13

Особенно монада IO.
Никакого IO не существует, а эта монада тоже чист#@!;**&CLsed8NH!@#! :bud:
Ты б еще RealWorld вспомнил.
Расскажи как использование монады Maybe делает код императивным.
Это не мне, надеюсь, вопрос. :ooo:

Dasar

1. Они чистые. 2. ФП императивны без них
ФЯ с нечистыми функциями - это скорее процедурный подход с first-class-ными процедурами.

apl13

Я, вроде, давал в этом треде ссылку на вики про Схему, а? Ты тоже загрязняешь чистоту, мешая ее с функциональностью?

Dasar

Scheme - это процедурный язык с first-class процедурами )

Papazyan

ФЯ с нечистыми функциями - это скорее процедурный подход с first-class-ными процедурами.
Нет.

Papazyan

Scheme - это процедурный язык с first-class процедурами )
Дважды нет.

yroslavasako

Да все виды лиспов - это калька питона. Исторически, конечно, это питон с лиспа слизан, а не наоборот, но они очень похожи. Функциональным ни тот, ни другой не назовёшь.

Papazyan

Да все виды лиспов - это калька питона. Исторически, конечно, это питон с лиспа слизан, а не наоборот, но они очень похожи. Функциональным ни тот, ни другой не назовёшь.
То-то и видно, что ты большой специалист. Схема и лисп мягко говоря разные вещи, только скобками похожи.

yroslavasako

Схема и лисп мягко говоря разные вещи, только скобками похожи.
Схема является диалектом лиспа. Не веришь - зайди посмотреть на вики. Как и CL, как и elisp.

Papazyan

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

Dasar

Расскажи как использование монады Maybe делает код императивным.
Согласен, не всякая монада делает код императивным.
Императивность появляется при использовании монад State и IO.

apl13

Фу на тебя! :fol:
Оставить комментарий
Имя или ник:
Комментарий: