Re: Something[void]
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.12.11 16:41
Оценка:
Здравствуйте, artelk, Вы писали:

A>Так вот, нельзя ли автоматизировать все это?


В F# пошли этим путем и придумали тип unit аналогичный FakeVoid. Результатом стало ухудшение совместимости с дотнетными библиотеками (и так хреновая) и непроизводительные затраты, так как даже возвращение пустой структуры влияет на производительность вызова.

На мой взгляд, можно сделать следующее: FakeVoid можно ввести в состав стандартной библиотеки и, возможно, реализовать некие функции, макросы или операторы для упрощения генерации оберток.

Можно так же сделать закладку в компиляторе, чтобы приведение типов от X -> void к X -> Y автоматически вставляла лямбду типа X -> FakeVoid.

А идея вот встраивание этого дела в язык, без поддержки со стороны рантайма, мне хорошей не кажется.

Можно было бы попробовать для каждой функции генерировать перегрузку для void, но тогда это не будет работать со внешними библиотеками и может привести к генерации кучи ненужных дубликатов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.