anchor.diff:  
   %% File    : lfe_doc.erl
   %% Author  : Eric Bailey
  -%% Purpose : Lisp Flavoured Erlang docstring parser.
  +%% Purpose : Lisp Flavoured Erlang documentation parser.
   
  -%% TODO: write explanation.
  -
  +%% The functions herein are used internally by the compiler.
  +%% There is no guarantee the API will not change dramatically in future.
   
   -module(lfe_doc).
   
   -export([module/1,patterns/1]).
   
   -import(lfe_lib, [is_symb_list/1,is_proper_list/1]).
  -
   -import(lists, [reverse/1]).
   
   -include("lfe_comp.hrl").
  
positive.code: %%     lfe_io:format1("error expanding ~P", [Call,10]).
  
  -spec module(#module{code::Defs}) -> #module{docs::Docs} when
        Defs :: list(Form),
        Form :: list(),
        Docs :: list(doc()).
  module(#module{code=[]}=Mod)   -> Mod#module{docs=[]};
  module(#module{code=Defs}=Mod) -> Mod#module{docs=do_module([], Defs)}.
  
  do_module(Docs, []) -> Docs;
  do_module(Docs, [{['define-function',Name,Body,DocStr],_Line}|Defs]) ->
      {yes,Arity,Patterns} = patterns(Body),
      Doc = make_doc(function, Name, Arity, Patterns, DocStr),
  
negative.code: do_patterns(N, Acc, []) -> {yes,N,reverse(Acc)};
  do_patterns(_, _, _) -> no.
  
  %% make_doc(Type, Name, Arity, Patterns, Doc) -> doc().
  %%  Convenience constructor for #doc{}, which is defined in src/lfe_doc.hrl.
  
  -spec make_doc(Type, Name, Arity, Patterns, Doc) -> doc() when
        Type     :: 'function' | 'macro',
        Name     :: atom(),
  