AD>> У меня на этапе изучения лиспа было очень яркое впечатления от AD>> одной очень мелкой задачки, которая была решена на лиспе. Надо было AD>> транспонировать матрицу. Решение состояло из вызова 3-х(трёх) AD>> функций, которые не имеют никакого отношения к матрицам, вообще AD>> никакого. То есть ни циклов, ничего такого, просто 3 строки, в AD>> каждой вызов одной функции, вложенный в другую. В лиспе также нет AD>> НИКАКИХ инструментов для обработки матриц. Делайте выводы.
> Вообще-то, можно одной строкой: > (apply #'map 'list matrix), > где matrix - список списков О! Верх изящества. Вспоминается пример, как дядечка в середине 70-х разбирал несколько ЧАСОВ(!) 4(!!!) строки на языке APL. 35 лет прошло, и никто ничему так и не научился :-/ > Но хотел бы я посмотреть на законченную реальную программу, которой бы > надо было работать с матрицами, и чтобы матрицы в ней были представлены > списками. :-) AFAIR существуют алгоритмы, которые реализуют списки с операциями 'head', 'tail', 'cons', 'n-th' и кажется еще и 'append' впридачу с трудоемкостью не хуже O(log(N)). Причем, в статье, которую я читал специльно указывавалось, что это, мол, актуально для функциональных языков, таких как Лисп и ML. Учитывая, что на практике log(N) всегда меньше 128, можно считать, эти операции имеют трудоемкость O(1), то есть выполняются за константное время. Лиспофилам эта информация, естественно, ни к чему ;-) Они никогда не занимаются оценкой трудоемкости алгоритмов, которые пишут. O(N^2), там где положено быть O(N), их нисколько не пугает. А экспонента -- вообще полная фигня, машины сейчас быстрые, и память дешевая. Вывод: с точки зрения идеологии введение в лисп массивов -- бестолковый и непродуманный прогиб под практику. Точно такой же прогиб, как всяческие Objective приставки к CAML-у. А о том, что такое введение "аккумуляторов" для обеспечения хвостовой рекурсии я вообще никому не скажу, потому что это непечатная лексика. -- Best regards, Aleksey Cheusov. -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

