Нет;согласно spec для выражений вычислений,
... for pat in expr do cexpr ...
переводится в
... b.For(expr, fun pat -> cexpr) ...
, что означает, что expr
вычисляется до For
, и еслион бросает, тогда, конечно, For
не вызывается.
Кстати, ваша стратегия также не будет работать как есть, поскольку seq
s ленивы, и, например, Seq.collect
обычно не бросает (скореекод, который вызывает его и оценивает последовательность, может вызвать запуск кода, который выдает).
Существует ряд других способов реализации чего-либо по принципу «восстановления seq
s» ...Я думаю, что рабочий процесс, возможно, является неправильным подходом, и вместо этого вам просто нужно несколько оберточных комбинаторов для seq
создания и отображения.
Какова реальная конечная цель?Это «выздоровление seq
» не кажется мне полезным, как вы собираетесь его применить?