anchor.diff:  
   add_shell_functions(Env0) ->
       Fs = [{cd,1,[lambda,[d],[':',lfe_shell,cd,d]]},
  -          {doc,1,[lambda,[f],[':',lfe_shell,doc,f]]},
             {help,0,[lambda,[],[':',lfe_shell,help]]},
             {i,0,[lambda,[],[':',lfe_shell,i]]},
             {i,1,[lambda,[ps],[':',lfe_shell,i,ps]]},
  
positive.code:     end.
  
  print_module_doc(Mod, Mdoc) ->
      lfe_io:format(?BLU("~p")++"\n\n~s\n", [Mod,Mdoc]).
  
  print_macro_doc(Mac, Docs) ->
      case lists:keyfind(Mac, #doc.name, Docs) of
          #doc{patterns=Pats,doc=Doc} ->
              lfe_io:format(?BLU("~p")++"\n  ~p\n\n~s\n", [Mac,Pats,Doc]);
          false ->
              lfe_io:format("~s\n", [<<"No macro defined">>])
      end.
  
  print_function_doc(Fun, Ar, Docs) ->
      case lists:keyfind({Fun,Ar}, #doc.name, Docs) of
          #doc{patterns=Pats,doc=Doc} ->
              lfe_io:format(?BLU("~p/~p")++"\n  ~p\n\n~s\n", [Fun,Ar,Pats,Doc]);
          false ->
              lfe_io:format("~s\n", [<<"No function defined">>])
      end.
  
negative.code: add_shell_macros(Env0) ->
      %% We write macros in LFE and expand them with macro package.
      Ms = [{c,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,c,?C_A(args)])]},
            {doc,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,docs,?Q(?C(args))])]},
            {ec,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,ec,?C_A(args)])]},
            {l,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,l,[list|?C(args)]])]},
            {ls,[lambda,[args,'$ENV'],?BQ([':',lfe_shell,ls,[list|?C(args)]])]},
  