anchor.diff:  
   -spec format_expr( E :: e() ) -> string().
   
  +format_expr( {str, _, B} )     -> io_lib:format( "\"~s\"", [B] );
  +format_expr( {file, _, B, _} ) -> io_lib:format( "'~s'", [B] );
  +format_expr( {true, _} )       -> "true";
  +format_expr( {false, _} )      -> "false";
  +
   format_expr( E ) ->
  -  io_lib:format( "~p", [E] ).+  io_lib:format( "~p", [E] ).
  +
  +
  +-spec format_type( T :: t() ) -> string().
  +
  +format_type( 'Str' )  -> "Str";
  +format_type( 'File' ) -> "File";
  +format_type( 'Bool' ) -> "Bool";
  +
  +format_type( T ) ->
  +  io_lib:format( "~p", [T] ).
  +
  +
  +-spec format_pattern( R :: r() ) -> string().
  +
  +format_pattern( {r_var, X, T} ) ->
  +  io_lib:format( "~p : ~s", [X, format_type( T )] );
  +
  +format_pattern( R ) ->
  +  io_lib:format( "~p", [R] ).
positive.code:                | type.
  
  -type reply() :: {query, e()}
                 | {error, stage(), _}.
  
  
  
  
negative.code:       io:format( "~s~n", [get_help()] ),
        shell_repl( ClientName, ShellState );
  
      "hist\n" ->
        G =
          fun( {_, R, E} ) ->
            SR = string:pad( format_pattern( R ), 16, trailing ),
            SE = format_expr( E ),
            io:format( "let ~s = ~s;~n", [SR, SE] )
          end,
        lists:foreach( G,
                       DefLst ),
        shell_repl( ClientName, ShellState );
  
  