> -- Илья Ермаков писал(а):
> Да, мне представляется хорошим вот такой вариант:Однако такой кунштюк пройдёт в императивном языке, а у меня сейчас были такие длиннючие цепи на функциональном - XQuery - и вот там только вложенностью Даже простейший ok не сделаешь.
Навскидку пара вариантов на Хаскелле (не знаю я этого Вашего XQuery):
## Код:
```
foo False x     = return () -- Этап x был неуспешен
foo True  3     = return () -- Все этапы прошли успешно
foo ok    step  = do   
    ok' <- case step of
                1 -> do Первый этап
                        return $ первый этап успешен

                2 -> do Второй этап
                        return $ второй этап успешен
    foo ok' $ step+1
```
## Код:
```
boo 1 True  = do Первый этап
                 boo 2 $ первый этап успешен              

boo 2 True  = do Второй этап
                 boo 3 $ второй этап успешен              

boo 3 True  = return () -- Все этапы прошли успешно
boo x False = return () -- Этап x был неуспешен
```
