> Victor Wagner wrote: > > On 2003.01.09 at 18:52:28 +0200, Andrei Sosnin wrote: > > > > > >> > >> > >>Их истинного (подразумеваемого) значения в данном контексте > я не понял, > >>поэтому, считая, что "языки структурны, потому что оперируют > структурами > >>данных" и что языки функциональны, когда описывают четкие функции > >>программы (я подменил это понятие понятием процедурного метода > >>программирования), я и использовал эту идею, которая подходи > ла под то, > >>как я понял тему. :-) > > > > > > Основной признак функционального языка - отсутствие side-эффектов у > > функций. То есть все, что передается в функцию, передается через > > параметры, все что возвращается - возвращается через результат. > > Это как раз то ограничение, благодаря которому становятся возможными > > применяющие функционалы, мемоизация и куча других вкусных фишек. > > > > С этой точки зрения C - не функциональный язык, так как функ > ции в нем > > могут иметь и очень часто имеют побочные эффекты. > > > > Т.е. повторный вызов функции (скажем printf) с теми же аргументами > > компилятор не имеет права заменить на закэшированное значени > е первого > > вызова. > > > > > > Теперь уж окончательно ясно... А как же насчет примеров истинно > функциональных языков? Какие языки следуют именно такой жестко > й логике? > Угадываю, что они, скорее всего, весьма сильно специализированы под > определенные задачи... Хотя, понимаю, что это необязательно... > > Очень уж любопытно стало про это узнать! :-) Воистину, покуда ты не > осознаешь, насколько мало ты знаешь, не станешь настоящим знат > оком! :-) > Великая мудрость...
из известных мне - haskel практического опыта со строго функциональными языками я (пока) не имею. Идея на мой взгляд очень красивая, но, на сколько я понимаю, проблемы начинаются когда из такой программы надо обшаться с внешним миром (IO, UI и тп). Тут вроде на настояший момент нет решения которое было бы одновременно элегантно, функционально (в широком смысле) и удобно в употреблении... Федя (знакомый с вопросом лишь теоретически)