anchor.diff:  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(),
  
positive.code:     {yes,Arity,Patterns} = patterns(Body),
      Doc = make_doc(macro, Name, Arity, Patterns, DocStr),
      do_module([Doc|Docs], Defs);
  do_module(Docs, [_|Defs]) -> do_module(Docs, Defs).
  
  -spec patterns(LambdaForm) -> 'no' | {'yes',Arity,Patterns} when
        LambdaForm :: nonempty_list(),
  
negative.code: %%     lfe_io:format1("error expanding ~P", [Call,10]).
  
  -spec module(#module{code::Defs}) -> #module{docs::Docs} when
        Defs :: [[_]],
        Docs :: [doc()].
  module(#module{code=[]}=Mod)   -> Mod#module{docs=[]};
  module(#module{code=Defs}=Mod) -> Mod#module{docs=do_module([], Defs)}.
  
  -spec do_module(Docs, Defs) -> Docs when
        Docs :: [doc()],
        Defs :: [[_]].
  do_module(Docs, [{['define-function',Name,Body,DocStr],_Line}|Defs]) ->
      {yes,Arity,Patterns} = patterns(Body),
      Doc = make_doc(function, Name, Arity, Patterns, DocStr),
  