Полезные альтернативные структуры управления?

Иногда, когда я программирую, я обнаруживаю, что какая-то конкретная структура управления была бы мне очень полезна, но не доступен напрямую на моем языке программирования. Я думаю, что мое наиболее частое желание - это что-то вроде «разделения времени» (я не знаю, как это на самом деле назвать):

{
    foo();
} split_while( condition ) {
    bar();
}

Семантика этого кода будет такова, что foo () всегда выполняется, а затем проверяется условие. Если true, то выполняется bar () , и мы возвращаемся к первому блоку (таким образом, снова выполняем foo () и т. Д.). Благодаря комментарию пользователя reddit zxqdms я узнал, что Дональд Э. Кнут пишет об этой структуре в своей статье «Структурированное программирование с помощью операторов go to » (см. страницу 279).

Какие альтернативные структуры управления, по вашему мнению, являются полезным способом организации вычислений?

Моя цель здесь - дать себе и другим новые способы мышления о структурировании кода, чтобы улучшить разбиение на фрагменты и рассуждения.

Примечание. : я не спрашиваю о том, как обобщить все возможные управляющие структуры, используя ли jne , if / goto , Макросы Lisp, продолжения, монады, комбинаторы, кварки или что-то еще. Я спрашиваю, какие специализации полезны при описании кода.

43
задан skaffman 20 March 2012 в 14:22
поделиться