Здравствуйте, Klapaucius, Вы писали:
K>Нет, не реализуются. Без метапрограммирования никаких шаблонов проектирования в коде нет — только результат их применения в голове программиста. Поэтому к уровню кода они никакого значения не имеют.
Т.е. например в C# или Java шаблонов проектирования не существует? )))
K>Из функций, категорий, моноидов, функторов, монад и т.д.
Это можно сказать про любое приложение в функциональном стиле. А я спрашивал про конкретное.
K>Ну конечно, если брать какую-нибудь убогую библиотеку, да еще и специально писать ужасы — тогда конечно.
Т.е. стандартная библиотека Хаскеля убогая? ) Понятно... )))
А какая у нас нормальная? )
K>Вот как выглядит нормальный код, использующий нормальную библиотеку: K>...
Практически тоже самое, только убрали описание типов в функциях.
K>Нет, прямой аналог этого кода на C++ написать нельзя, потому что системы контроля эффектов в нем нет.
Ооооо, снова наша таинственная польза от системы контроля эффектов. Которая много раз заявлялась, но ни разу не демонстрировалась... Нуну)))
K>Я вроде бы сразу признал, что преобразование между "нелифтнутым" и "лифтнутым" кодом требует значительной модификации кода. Речь-то была о сравнении "лифтнутого" и кода на обычном императивном языке.
Уже хорошо.
K>Конечно он стал страшнее, по сравнению с "наивной" версией. Но не страшнее плюсовой, синтаксический мусор в которой существует вовсе без всякого смысла и оправдания.
О да, о да. Только в C++ версии нет ни единого оператора/вызова функции не по делу. А в Haskell версии (даже с помощью "нормальной" библиотеки), которая вроде как должна быть вообще без мусора, мы имеем "всего лишь" fmap, V.unsafeFreeze, V.thaw, которые вообще непонятно чем заняты по отношению к прямой функциональности нашего кода. И это если забыть про вынужденно кривой код модификации самого массива.