История изменений
Исправление monk, (текущая версия) :
когда зависимости точно определены, то модулей вполне достаточно
Фактически, есть 5 уровней:
1) Типы известны. Используются только модули
2) Типы зависят от внешних условий (например, UI может быть text или gtk) — юниты.
3) В одной коллекции объекты разных типов, но с одинаковым API — классы (racket/class)
4) Взаимодействие нескольких коллекций с объектами разных типов. Функция определяется типами нескольких аргументов — CLOS и аналоги.
5) API объектов может меняться после создания объекта — объекты на прототипах (как в JS).
Начиная с п. 3 появляются дополнительные расходы на каждый вызов метода. С увеличением пункта эти расходы растут.
Исходная версия monk, :
когда зависимости точно определены, то модулей вполне достаточно
Фактически, есть 4 уровня:
1) Типы известны. Используются только модули
2) Типы зависят от внешних условий (например, UI может быть text или gtk) — юниты.
3) В одной коллекции объекты разных типов, но с одинаковым API — классы (racket/class)
4) Взаимодействие нескольких коллекций с объектами разных типов. Функция определяется типами нескольких аргументов — CLOS и аналоги.
5) API объектов может меняться после создания объекта — объекты на прототипах (как в JS).
Начиная с п. 3 появляются дополнительные расходы на каждый вызов метода. С увеличением пункта эти расходы растут.