

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

     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_s_c_r_i_p_t_i_o_n:

     `restart' performs a type of non-local return.  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 `res-
     tart'. 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")

