Control structures in programming languages From goto to algebraic effects