anchor.diff:      [A,{'(',L},{')',L}|trans_qm(Ts)];
   trans_qm([{'?',L},{var,_,V}|Ts]) ->
       [{atom,L,V},{'(',L},{')',L}|trans_qm(Ts)];
  +trans_qm([{'?',L},{'?',_},Arg|Ts]) ->
  +    %% Expand to call lfe_macro_include:stringify(quote(Arg)).
  +    [{atom,L,?MODULE},{':',L},{atom,L,stringify},{'(',L},
  +     {atom,L,quote},{'(',L},Arg,{')',L},
  +     {')',L}|
  +     trans_qm(Ts)];
   trans_qm([T|Ts]) -> [T|trans_qm(Ts)];
   trans_qm([]) -> [].
  +
  +%%% stringify(Sexpr) -> String.
  +%%  Returns a list of sexpr, a string which when parse would return
  +%%  the sexpr.
  +
  +stringify(E) -> lists:flatten(lfe_io:print1(E)).
  
positive.code:     end.
  
  %% Errors.
  format_error({notrans_record,R}) ->
      io_lib:format("unable to translate record ~w", [R]);
  format_error({notrans_macro,M}) ->
      io_lib:format("unable to translate macro ~w", [M]).
  
  %% file([FileName], Env, State) -> {yes,(progn ...),State} | no.
  %%  Expand the (include-file ...) macro.  This is a VERY simple
  
negative.code: 
  -module(lfe_macro_include).
  
  -export([file/3,lib/3,format_error/1,stringify/1]).
  
  -compile([export_all]).
  
  