

restart {base}                               R Documentation

_R_e_s_t_a_r_t _a_n _E_x_p_r_e_s_s_i_o_n

_D_e_s_c_r_i_p_t_i_o_n_:

     `restart' performs a type of non-local return.

_U_s_a_g_e_:

     restart(on = TRUE)

_A_r_g_u_m_e_n_t_s_:

      on: if true a jump point is set; if false the jump
          point is removed

_D_e_t_a_i_l_s_:

     When `restart' is called with `on = TRUE' the evaluator
     marks that function as a return point. Any errors or
     signals (such as control-C on Unix) cause control to
     return to the start of the function containing the call
     to `restart'. The most recently established function is
     always entered first.

_N_o_t_e_:

     Use of this code is likely to result in an infinite
     loop. It should be avoided if possible and is included
     in R for compatibility with S. The planned R exception
     handling should remove all need for such a function.

_E_x_a_m_p_l_e_s_:

     f <- function(x, first = TRUE)
     {
          restart(first)
          if( first ) {
             first <- FALSE
             return(log(x))
          }
          else
             return(NA)
     }
     f("a")

