Evening, Andrei. Andrei Sosnin <[EMAIL PROTECTED]> 17:56 8/1/2003 wrote:
>> в принципе да, tcl функциональный язык - каждый оператор на самом деле >> является функцией. Если не задумываться об этом, все таки синтаксис >> у tcl и например Си похож AS> В С++ тоже каждый оператор является функцией... Но он все равно больше AS> "структурный", чем функциональный. Мда? Какие аргументы у оператора for, например? Действительно ли это функция? какие значения она возвращает? Можно ли передать ее в качестве аргумента в другую функцию, например так: void foo(void* fun) { (*fun)(i=0;i<10;i++) {...} }; main() { foo(for); }. AS> Знаете, тут применима, в принципе, та же идея, что и в споре об AS> определении, что такое программа (помните? :-). Нет. Можно напомнить? AS> Функциональность или "структурность" языков программирования - это AS> чистые абстракции. Без функциональности (да-да, именно: я имею в виду AS> ориентированность на функциональное программирование) любой язык AS> программирования становится языком структуризации данных (как, AS> например, XML, SGML, HTML, TeX, ...). То есть, по крайней мере, AS> функциональными языками являются все языки программирования, как TCL, AS> Python, C, C++, Lisp, JavaScript: они включают в себе такую AS> возможность - AS> программирование функций. У вас, простите, каша в голове :) Вопрос - является ли, с вашей точки зрения, наличие first-class functions характерной чертой функциональных языков программирования? А то, сдается, нету единства в толковании терминов. AS> Любой нормальный язык программирования также является структурным AS> языком, потому что так или иначе включает в себя определение структур AS> данных - переменных, массивов, структур, объектов... Это все структуры AS> данных. Стуктурные (более верно, имхо, говорить все же "императивные") языки называются так не потому, что позволяют описывать структуры данных. AS> Вероятно, вопрос заключается в том, на что данный язык более сильно AS> ориентирован, и тут уже можно долго и упорно спорить, ибо слишком AS> сложным оказывается сравнение, например, C++ и Python - который из них AS> "более структурный". Хотя, с другой стороны, мне кажется довольно AS> очевидным, что, например, C является более ориентированным (читай: AS> припособленным) на функциональное программирование, чем, скажем, C++ AS> или Python. И как на C правильно реализуется map и fold? А так, чтобы было type-safe? А рекурсивные функции? А с tail-recursive оптимизацией? ЗЫ Пост-фактум прошу прощения за то, что письмо состоит из одних "каверзных" вопросов. Но я не ставил себе целью объяснить - скорее, зародить сомнение :) -- Dmitry Astapov //ADEpt E-mail: [EMAIL PROTECTED] GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498 2B08 7867 4860 F5D7 639D