Паттерны vs ФП [из Посоветуйте книжку по ..]
кинь ссылку на источник этой картинки
Паттерны - это о структуре взаимосвязей между блоками и слабо зависит от того, какие блоки используются для построения этой структуры(функции, объекты, процедуры, агенты, компоненты и т.д.). На ФП каждый паттерн имеет свою функциональную структуру.
картинка правильнаяяЭто неверное утверждение. Возьмем первую строку: Single Responsibility Principle. Сам по себе переход на функции, никоим образом не страхует от нарушения этого принципа. ФП-программист, не понимающий этого принципа - ровно также располагает в одной функции всё сразу.
http://www.slideshare.net/ScottWlaschin/fp-patterns-buildstu...
2DarkGrey да, картинка утрированная конечно
2DarkGrey да, картинка утрированная конечно
ФП-программист, не понимающий этого принципа - ровно также располагает в одной функции всё сразу.Располагать или не располагать в одной функции, в этом вопросе проще отталкиваться от задачи, ситуации на проекте и здравого смысла. Паттерны лишнее звено. Это как разговаривать на естественном языке. Большинство людей разговаривают, не задумываясь о грамматических конструкциях.
Большинство людей разговаривают, не задумываясь о грамматических конструкциях.не очень хороший пример, так как очень часто весьма не просто понять, что хотел сказать человек
http://www.slideshare.netДоклад на 200+ слайдов начинается с нереального баттхёрта на тему ООП. Мне почему-то начинает казаться, что все самые популярные статьи и книги на тему ФП начинаются именно так. Первая глава посвящается тотальному разгрому императивных (опционально ООП) языков с объяснением, какие они ужасные. Вместо этого лучше бы сразу разбирали 10 строчек кода
Мне почему-то начинает казаться, что все самые популярные статьи и книги на тему ФП начинаются именно так.ФП чаще всего идет от около академических кругов. А в академических кругах так принято, сначала надо описать недостатки других подходов, потом уже приступать к описание того, о чем хотел написать. Иначе в академических кругах про тебя подумаю, что ты не заботал тему.
ФП начинаются именно так. Первая глава посвящается тотальному разгрому императивныхЯ, наверное, зря опять напишу, что функциональность и императивность ортогональные характеристики, да?
функциональность и императивность ортогональные характеристики, да?Это две ортогональные характеристики, но и ООЯ и ФЯ используют их обе. В ФП императивность появляется при вводе монад и их использовании в коде.
В ФП императивность появляется при вводе монад и их использовании в коде.http://en.wikipedia.org/wiki/Scheme_%28programming_language%...
Расшифруй. Намекаешь на императивность нечистых функций?
(1. Они чистые. 2. ФП императивны без них. 3. В неФП их ничто не мешает ввести.)
Это как разговаривать на естественном языке. Большинство людей разговаривают, не задумываясь о грамматических конструкциях.И тем не менее существует tvtropes.org и туда регулярно заглядывают. Говоришь, в естественной речи не бывает паттернов?
1. Они чистые.Особенно монада IO.
В ФП императивность появляется при вводе монад и их использовании в коде.Расскажи как использование монады Maybe делает код императивным.
Особенно монада IO.Никакого IO не существует, а эта монада тоже чист#@!;**&CLsed8NH!@#!
Ты б еще RealWorld вспомнил.
Расскажи как использование монады Maybe делает код императивным.Это не мне, надеюсь, вопрос.
1. Они чистые. 2. ФП императивны без нихФЯ с нечистыми функциями - это скорее процедурный подход с first-class-ными процедурами.
Я, вроде, давал в этом треде ссылку на вики про Схему, а? Ты тоже загрязняешь чистоту, мешая ее с функциональностью?
Scheme - это процедурный язык с first-class процедурами )
ФЯ с нечистыми функциями - это скорее процедурный подход с first-class-ными процедурами.Нет.
Scheme - это процедурный язык с first-class процедурами )Дважды нет.
Да все виды лиспов - это калька питона. Исторически, конечно, это питон с лиспа слизан, а не наоборот, но они очень похожи. Функциональным ни тот, ни другой не назовёшь.
Да все виды лиспов - это калька питона. Исторически, конечно, это питон с лиспа слизан, а не наоборот, но они очень похожи. Функциональным ни тот, ни другой не назовёшь.То-то и видно, что ты большой специалист. Схема и лисп мягко говоря разные вещи, только скобками похожи.
Схема и лисп мягко говоря разные вещи, только скобками похожи.Схема является диалектом лиспа. Не веришь - зайди посмотреть на вики. Как и CL, как и elisp.
В отличие от тебя я интерпретатор схемы писал. Схема - типичный функциональный язык, каким она и была задумана изначально. Лисп же - это мутант всего со всем, но по гамбургскому счету это императивный язык.
Расскажи как использование монады Maybe делает код императивным.Согласен, не всякая монада делает код императивным.
Императивность появляется при использовании монад State и IO.
Фу на тебя!
Оставить комментарий
Ushkvarok
понимаю, что бесполезно, но все же скажусейчас уже давно нормально начинать сразу с ФП