anchor.diff:  
   start_eval(St) ->
       Self = self(),
  -    spawn_link(fun () -> evaluator(Self, St) end).
  -
  -evaluator(Shell, St) ->
  +    spawn_link(fun () -> eval_init(Self, St) end).
  +
  +eval_init(Shell, St) ->
       eval_loop(Shell, St).
   
   eval_loop(Shell, St0) ->
       receive
  -	{eval_expr,Shell,Form} ->
  -	    St1 = eval_form(Form, Shell, St0),
  -	    eval_loop(Shell, St1)
  +        {eval_expr,Shell,Form} ->
  +            St1 = eval_form(Form, Shell, St0),
  +            eval_loop(Shell, St1)
       end.
   
   %% eval_form(Form, ShellPid, State) -> State.
  
positive.code: server(default) ->
      server(lfe_env:new());
  server(Env) ->
      process_flag(trap_exit, true),		%Must trap exists
      io:fwrite("LFE Shell V~s (abort with ^G)\n",
                [erlang:system_info(version)]),
      %% Create a default base env of predefined shell variables with
      %% default nil bindings and basic shell macros.
      St = new_state("lfe", [], Env),
      Eval = start_eval(St),
      server_loop(Eval, St).			%Run the loop
  
  server_loop(Eval0, St0) ->
      %% Read the form
      Prompt = prompt(),
      {Ret,Eval1} = read_expression(Prompt, Eval0, St0),
      case Ret of
  	{ok,Form} ->
  	    {Eval2,St1} = shell_eval(Form, Eval1, St0),
  	    server_loop(Eval2, St1);
  	{error,E} ->
  	    list_errors([E]),
  	    server_loop(Eval1, St0)
      end.
  
  shell_eval(Form, Eval0, St0) ->
      Eval0 ! {eval_expr,self(),Form},
      receive
  	{eval_value,Eval0,_Value,St1} ->
  	    server_loop(Eval0, St1);
  	{eval_exit,Eval0,Class,Reason} ->
  	    receive {'EXIT',Eval0,normal} -> ok end,
  	    report_exception(Class, Reason),
  	    Eval1 = start_eval(St0),
  	    server_loop(Eval1, St0);
  	{'EXIT',Eval0,Reason} ->
  	    report_exception(error, Reason),
  	    Eval1 = start_eval(St0),
  	    server_loop(Eval1, St0)
      end.
  
  %% prompt() -> Prompt.
  
negative.code: 
  eval_form(Form, Shell, St0) ->
      try
          Ce1 = add_vbinding('-', Form, St0#state.curr),
          %% Macro expand and evaluate it.
          {Value,St1} = eval_form(Form, St0#state{curr=Ce1}),
          %% Print the result, but only to depth 30.
          VS = lfe_io:prettyprint1(Value, 30),
          io:requests([{put_chars,VS},nl]),
          %% Update bindings.
          Ce2 = update_shell_vars(Form, Value, St1#state.curr),
          St2 = St1#state{curr=Ce2},
          %% Return value and updated state.
          Shell ! {eval_value,self(),Value,St2},
          St2
      catch
          exit:normal -> exit(normal);
          Class:Reason ->
              Stk = erlang:get_stacktrace(),
              %% We don't want the ERROR REPORT generated by the
              %% emulator. Note: exit(kill) needs nothing special.
              Shell ! {eval_error,self(),Class},
              E = nocatch(Class, {Reason,Stk}),
              exit(E)
      end.
  
  nocatch(throw, {Term,Stack}) ->
  