Я Вас понял: проблемы со взаимопониманием возникли из-за того, что я сейчас “сижу” в основном в Фортране и невольно использую фортранную терминологию, которая достаточно вольно трактует некоторые понятия. Плюс к тому, она несколько различается у версий 77, 90 и 95.
Вы же знаете, что сейчас я стараюсь сделать “Библиотеку численных методов”, посему и говорю о ней “библиотека”, временами также используя её синоним “пакет”, как дань основным её источникам - Пакетам числовых методов… Поэтому я ни разу не имел в виду ни библиотек dll (да и к чему бы их тут упоминать?), ни мифических “пакетов”, отсутствующих в PascalABC.NET. В этом контексте ясно: она вся - ОДИН МОДУЛЬ unit, который должен подключаться по uses. И, конечно же, говоря о “программах в библиотеке”, я имею в виду программы в функциональном смысле - набор процедур, функций, классов и т.д., реализующих тот или иной численный метод. В этом смысле библиотека (пакет) состоит из программ, а не подпрограмм.
Тут был неправ, конечно. Хотел сказать именно о вложенных программных единицах - процедурах и функциях. Т.е. если “программе” нахождения корней нелинейного уравнения достаточно получить real->real, то для одномерной оптимизации нужно передавать y->array of real и т.д. Если бы такую функцию можно было локализовать в некоем блоке begin … end вместе с процедурами, реализующими некоторый численный метод, мы бы в рамках одного модуля получили достаточно независимые блоки кода с реализациями, что уберегло бы от коллизий и упростило межпрограммные связи. Видимо тут может быть только один выход - каждый численный метод превратить в класс, чтобы за счет инкапсуляции добиться необходимой его автономности.
Я уже приводил схему. Процедура А получает ссылку на функцию F при вызове из программы пользователя. Она может обратиться к этой функции - это верхний уровень вызова. Далее, процедура A вызывает процедуру В и также передает ей ссылку на функцию F. Процедура В может вызвать функцию F и это будет второй, более глубокий уровень по вложенности программных единиц относительно пользовательской программы.
Т.е. реализация реально может быть только в конструкторе класса… инициализировать некие свойства и вызывать нужный метод, который эти свойства уже будет только менять.
Как итог - все надо делать на классах… другого пути без ломания головы тут, похоже, нет…