G>Отличный пост. Слушай, мне вот что подумалось. В С++ можно перекрывать оператор "запятая" . Можно там, пользуясь этим, изобразить злые монады?
Если бы даже нельзя было перегружать запятую, можно перегружать кучу других операторов — для монад подошел бы, например, оператор сдвига. Проблема в другом, в типе оператора bind:
(>>=) :: (Monad m) => m a -> (a -> m b) -> m b
Второй аргумент — функция, причем практически всегда это лямбда-выражение. Без замыканий монадный стиль будет практически бесполезен.
Здравствуйте, lomeo, Вы писали:
L>Ну, я к тому, что ничего тот флейм не показал, а если кто выводы и делал — то больше для себя
Он ничего не показал только упертым фанатикам. Ежу понятно, что в ФП просто нет средст декомпозиции сравнимых по мощьности с классами. То что один из языков расширен хитрой концепцией предоставляющей подобный механизм ни как не меняет дела с самим ФП.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, NotGonnaGetUs, Вы писали:
NGG>Здравствуйте, IT, Вы писали:
T>>>Тогда зачем надо было его приводить?
IT>>Чтобы не разводить подобный флейм ещё раз.
NGG>Я прочитал ту баталию и из неё совсем не видно, что сторона в лице vlada что-то смогла доказать,
Во-первых, почему имя с маленькой буквы?
Во-вторых, я ничего не доказывал. Я справшивал. Ответ был лично для меня очевиден. ФП сам по себе не предоставляет средств декомпозиции. Собственно это и подтвердило мое предположение.
NGG>Может я чего не понял из того флейма,
Совершенно точно. И вообще когда подходишь к вопросу с заранее готовой упертостью, то ничего новго для себя никгда не откроешь. Вообще люди которые уперлись в "одну самую правильную иделогию" потеряны для общества. Они выдают эмоции и нарушают правила логики только чтобы остаться при своем исходном мнении.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, lomeo, Вы писали:
IT>>Сторона Влада ничего и не доказывала. Она спрашивала как средствами ФП выразить абстракцию. Оказалось, что средствами ФП никак.
L>Э-э-э... Где это оказалось? У меня такое впечатление, что ты ответы не читал совсем.
Это оказалось когода вместо демонстрации оных начался процесс развешивания лапши на уши.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, lomeo, Вы писали:
L>Например, из фразы "В гибридах типа Немерле ФП используется на уровне методов, где собственно говоря и даёт максимальный эффект." можно вывести, что если использовать ФП шире уровня методов, то эффект падает.
Вообще-то на то они и гибридные. Использовать ФП для работы с классами довольно бессмысленно если не не возможно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, lomeo, Вы писали:
L>Был задан вопрос, как в ФЯ работают с абстракциями, были показаны варианты как. В чём тут можно убедиться или не убедиться?
Это или логические ошибки, или откровенная и довольно наглая лож. Про ФЯ речь в общем-то не шла. Речь шало про ФП.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
IT>>>Сторона Влада ничего и не доказывала. Она спрашивала как средствами ФП выразить абстракцию. Оказалось, что средствами ФП никак.
L>>Э-э-э... Где это оказалось? У меня такое впечатление, что ты ответы не читал совсем.
VD>Это оказалось когода вместо демонстрации оных начался процесс развешивания лапши на уши.
Лично тебе я продемонстрировал возможности классов типов для выражения абстракции, приведя в пример класс Foldable. О чём я здесь вешал тебе лапшу на уши?
Здравствуйте, VladD2, Вы писали:
VD>Он ничего не показал только упертым фанатикам. Ежу понятно, что в ФП просто нет средст декомпозиции сравнимых по мощьности с классами. То что один из языков расширен хитрой концепцией предоставляющей подобный механизм ни как не меняет дела с самим ФП.
А модульность — это, конечно, встроенный в ОО механизм по определению.
Речь идёт о том, что в ФЯ нет механизмов для выражения абстракции, поэтому создаются гибридные языки. Ну или о том, что лучше ОО для верхнего уровня ничего не придумано. Спор идёт об этом, а не "самом ФП".
Так вот, такие механизмы есть, поэтому надобность в ОО отпадает, ну не нужен он, прикинь?
Здравствуйте, VladD2, Вы писали:
VD>Совершенно точно. И вообще когда подходишь к вопросу с заранее готовой упертостью, то ничего новго для себя никгда не откроешь. Вообще люди которые уперлись в "одну самую правильную иделогию" потеряны для общества. Они выдают эмоции и нарушают правила логики только чтобы остаться при своем исходном мнении.
О, да, ты это отлично демонстрируешь!
Ты постоянно твердишь, что ты практик, а интересуют тебя сферические вопросы: "Сам ФП не позволяет выразить абстракцию". Ну так "сам ООП" не позволяет даже сложить два числа, кого это интересует вообще? Что нового тут можно открыть?
T>>Слабо логически связать "преимущества ФП" и тот факт, что "сама программа является ОО?" VD>Я вообще не понял, что ты хочешь.
Почему нельзя, чтобы и методы были ОО?
Почему нельзя, чтобы и программа была ФП?
Почему программа должна быть ОО, а методы — чистыми (ФР)? Почему выгодно именно так, а не иначе?
T>>(третья версия ответа. Две первых были очень грубы) VD>Что было грубо? Опять ничего не понимаю.
Это плохо.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Здравствуйте, NotGonnaGetUs, Вы писали:
NGG>Да, безусловно, использование функциональных фич на уровне методов даёт свои плюсы. Но, как мне кажется, эти плюсы скорее синтаксический сахар. С ними приятнее, но их использование быстрее программу не сделают, скорее наоборот (из-за неявного создания классов обёрток для методов).
А надо быстрее? Тут даже доказывать ничего не надо. Возьми самый чистый в мире ФЯ Хаскель и сравни его с тем же Немреле. Последний рвет Хаскель по производительности как тузик грулку и это при том что ты таки прав и оптимизаций фунционального плана в Немерле почти нет.
NGG>Поясню на примере: В с# у класса лист есть методы ака map, filter, etc создающие новые листы. В "чисто" функциональном языке компилятор/рантайм могут позаботиться о том, чтобы новый лист не создавался, если старый уже никому не будет нужен. Как добиться подобного в с#? Компилятор немерле умеет делать такое?
Не. Он просто примерно 3-1000 раз (в зависимости от ситуации) бстре Хаскеля компилятор которого что-то там может в этом плане. Создание нового объекта в дотнете не так дорого. Это вам не С++. GC делает эту операцию относительно дешеовй. Конечно если подобные вещи делать в узком месте программы, то можно получить кучу проблем с производительностью. Но гибриды на то и гибриды чтобы давать выбор программисту, что и как применять.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, NotGonnaGetUs, Вы писали:
NGG>В качестве иллюстрации можно посмотреть на scala и java...
ОК. Где цирф и тесты?
В прочем, если они будут, и будут не в пользу Скалы, то это все равно ничего не даст, так как у того же C# и Nemerle производительность просто отменная.
NGG>Но забудем о производительности и вернёмся к исходному вопросу. Правильно ли я понял, что ваша точка зрения заключается в том, что никакой выгоды в использовании функциональных языков нет (за исключением возможности использовать более компактный синтаксис в телах методов)?
Это, уважаемый, гнусные примемы софистики. Где и кто такое утверждал? Nemerle, Scala, или скажем, OCaml ни чем не меньшие ФЯ нежели Хаскель или Схема. А разговор было о том, что именно в методах ФП смотрится очень к месту и по делу. ООП дает средства декомпозиции уровня системы, обеспечивает производительность за счет императивности (где надо), а ФП и его сахар позволяет записывать алгоритмы (которые в ООП и сосредоточены в методах) в более компактной и декларитивной форме.
Что касается классов типов Хаскеля, то они тоже хорошо подходят для декомпозиции уровня приложения, но по стути они являются развитием тех же идей, что и в ООП (астрактных типов данных) и к самому ФП отношения не имеют (как, скажем, классы в ОКамле).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
[]
VD>Не. Он просто примерно 3-1000 раз (в зависимости от ситуации) бстре Хаскеля компилятор которого что-то там может в этом плане. Создание нового объекта в дотнете не так дорого. Это вам не С++. GC делает эту операцию относительно дешеовй.
L>>Был задан вопрос, как в ФЯ работают с абстракциями, были показаны варианты как. В чём тут можно убедиться или не убедиться? VD>Это или логические ошибки, или откровенная и довольно наглая лож. Про ФЯ речь в общем-то не шла. Речь шало про ФП.
А как их отличить?
PS
Ложь пишется с мягким знаком. Уже третий раз встречаю.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, lomeo, Вы писали:
L>>Например, из фразы "В гибридах типа Немерле ФП используется на уровне методов, где собственно говоря и даёт максимальный эффект." можно вывести, что если использовать ФП шире уровня методов, то эффект падает.
VD>Вообще-то на то они и гибридные. Использовать ФП для работы с классами довольно бессмысленно если не не возможно.
Поскольку продолжается, повторение этого тезиса, продолжу повторение моего вопроса.
Итак, зачем использовать классы?
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)