> -- Игорь Лоскутов писал(а):
> Потому как прикладной модуль хоть и может, но не должен мпортировать модуль реализации, так как на корню рубит саму идею, ради которой создавался модуль реализации.Вы хотели сказать, что это рубит идею, ради которой создавался абстрактный модуль, а не модуль реализации. : )

Мой ответ будет такой. Поскольку абстрактный модуль создавался для независимости от платформы (а не от реализации), то платформенно-зависимые модули, в том числе из пользовательского приложения, вполне могут обращаться к ним напрямую, если те предоставляют необходимую информацию, отсутствующую в абстрактном интерфейсе. Мы же не удивляемся тому, что модули подсистемы Host могут импортировать друг друга напрямую. Если не получается написать на абстрактном интерфейсе, то всего лишь получим платформенно-зависимое приложение. Ничего особо страшного в этом нет, полно задач можно найти, необходимых на одной платформе и бессмысленных на другой (например, узнать текущий путь того или иного диска, см. пред. пост). Если нужна и специфика, и независимость, то придётся выкручиваться иначе - либо дорабатывать каркас, либо вводить собственную прослойку (драйвера - аналоги Host*).