Dmitry Astapov wrote:
Да, придется. Особенно интересно, если реализация f написана не мной, для изменений недоступна и совсем ни разу не объект. Я хотел своим примером показать, как можно создать и вернуть сущность типа "функция". В твоем же примере возвращается нечто, ни разу не являющееся функцией. А syntactic sugar в виде перегруженного оператора "()" не делает, как не старайся, результат нормальной функцией. Конечно, я согласен - можно придумать свою систему шаблонов и "жить в ней", подтверждая утверждение о том, что любая достаточно сложная программма на C++ содержит половинчатую, глючную, не соответсвующую спецификациям реализацию лиспа :) Речь в начале треда, помимо прочего, шла еще и про объем кода и его читаемость/сопровождаемость..... VH> Я не хочу сказать что С++ лучше чем какие-либо языки, я просто хочу сказать, VH> что в С++ это тоже возможно, но часто в более громоздкой форме. К сожалению, VH> не все об этих возможностях С++ знают. Именно, в гораздо более громоздой форме. Может и хорошо, что лишь немногие об этих возможностях знают, и их используют.
Хочется подчеркнуть, что С++ создавался как язык низкого уровня, приспособленный больше для решения задач системного характера (программирования сложных систем). Это язык объектно-ориентированного программирвоания, то есть программирования - через выделение и формализацию абстрактных объектов, над которыми совершаются те или иные абстрактные действия. Для программиста С++ любое абстрактное понятие вроде "файла", "строки", "базы данных", "графического интерфейса", является объектом или классом объектов.
Суть же моей мысли, почему я взялся защищать С++, заключается в том, что С++ позволяет делать все, что может позволить любой язык программирования хотя бы только потому, что он достаточно низкоуровневый. Конечно, языки высокого уровня, вроде Python или Haskell могут что-то делать гораздо проще, чем С++, но при этом они теряют все-таки кое-что, например, скорость, объем использования ресурсов.
У меня возник (возможно каверзный) вопрос: есть ли в Haskell возможность удобного проектирования UI, в частности - GUI? Чисто функционально? Как (в общих словах) реализуются в Haskell инструменты программирования GUI - widget-ы? Удобнее ли это объектно-ориентироанного подхода, насколько и почему?
Программирование GUI - это только пример. Просто я не смог себе представить, как можно достаточно наглядно заставить pure function работать как, например, главный цикл widget-а.
-- Andrei Sosnin http://zzx.ath.cx <!-- : it all depends on your vision : -->