Илья Ермаков писал(а):
Как Вы будете модуль с этой функцией раздельно компилировать, если Вы не знаете типов размеров элементов этого списка?
Ну как-то же компилирую! :о)
В принципе, в чём проблема-то? Ну не знаете Вы размеры элементов этих типов, и что с того? Зато Вы знаете, какие операции к ним можно применять, а это главное...
А если уж там эти элементы хранятся пусть даже в виде ссылок, ведущих в кучу, ну что ж, в худшем случае это приведёт к некоторому уменьшению быстродействия из-за косвенной адресации и более частых промахов в кешах...
В лучшем же случае программа хранится в некоем абстрактном представлении и переводится в конкретный тип во время линковки. Можно даже придумать что-то типа JIT-компиляции во время вызова функции, когда уже всё известно о характеристиках этих элементов...
Так в чём проблема-то?
Илья Ермаков писал(а):
Когда компилируется целиком программа, то все варианты использования функции уже известны, и будет сгенерировано столько её реализаций, сколько нужно для конкретной программы.
Вообще-то, конечно, желательно делать так, хотя это может привести к разбуханию экзешника. Есть трансляторы, которые делают именно так, есть же трансляторы, которые генерируют код с таблицами виртуальных методов а-ля С++...
Илья Ермаков писал(а):
Вот-вот, я уже не раз говорил, что Хаскелл - это С++ для функциональщиков И аргумент "Hello world написать очень просто", между прочим, не катит Если язык позволяет такие навороты и сферических коней, какие я видел у Душкина, то с этим языком что-то не то..
Не знаю, книгу Душкина я не видел. А Вы не могли бы как-нить её просканировать, да в виде DjVu, например, выложить для служебного пользования?
Душкин, кстатит, сейчас работает над второй книгой. Я видел начало этой книги -- вроде вполне адекватно, никаких наваротов...
Кстати, сравнение с С++ мне кажется глубоко неверным. Лучше сравнивать, ну например, с Адой. Хотя стандартный Хаскелл-98 гораздо компактнее и Ады и С++...