Здравствуйте, Evgeny.Panasyuk, Вы писали:
G>>Да я не про это. Кто будет "дергать за веревочку"?
EP>Программист вестимо, а кто ещё если это "явное" упрощение?
G>>И главное — как он будет определять нужно ли "дергать"?
EP>Самому или с помощью компилятора. Например сейчас же компилятор ругается на вывод Object'а?
Вот, при вычислении мы получили некий variant[int, void]. Вы, только честно, способны сказать _что_ мы получили? Ваше типо-maybe? Или, может быть, это "нормальный" variant?
Вы предлагаете интерпритировать _любой_ variant[T, void] как maybe чтоли?! А если T — внезапно — окажется void? if(x > 0) foo(x) — это тогда "go wrong" — без вариантов
А что делать в "обобщенном коде", когда любой variant[T, U], при таком подходе, способен внезапно стать таким типо-maybe?
Еще раз... maybe — вещь вполне конкретная. Обладает вполне определенной семантикой. variant — такой семантической нагрузки не несет. И "усилием воли" её на него "повесить" не выйдет.
G>>Есть foo(x) -> void и bar(x) -> variant[int, void].
G>>G>>if(x > 0) bar(x) else foo(x)
G>>
G>>Нужно "дергать"?
EP>Если неявного упрощения нет — то да, можно.
Кхм... я дико извиняюсь. Но я таки спрашивал вас не за "можно", а за "нужно".
По остальному отпишусь отдельным постом
---
С уважением, Константин Сиваков