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: 
  %% File    : lfe_doc.erl
  %% Author  : Eric Bailey
  %% Purpose : Lisp Flavoured Erlang docstring parser.
  
  %% TODO: write explanation.
  
  
  -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").
  
negative.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);
  do_module(Docs, []) -> Docs.
  
  %% patterns(LambdaForm) -> no | {yes,Arity,Patterns}.
  %%  Given a {match-,}lambda form, attempt to return its patterns (or arglist).
  %%  N.B. Guards are appended to patterns and Patterns is always a list of lists.
  
  -spec patterns(LambdaForm) -> 'no' | {'yes',Arity,Patterns} when
        LambdaForm :: nonempty_list(),
  