anchor.diff:  -record(term_q, {term :: utf8_str()}).
   
   %% Type definitions
  --type q() :: #and_q{} | #or_q{} | #not_q{} | #term_q{}.
  +-type q() :: {and_q, [q(),...]} |
  +             {or_q, [q(),...]} |
  +             {not_q, q()} |
  +             {term_q, utf8_str()}.
   -type utf8_str() :: unicode:unicode_binary().
   
   %%----------------------------------------------------------------------------
  
positive.code:     product(Rest, [[H | T] || H <- L, T <- Acc]).
  
  %%----------------------------------------------------------------------------
  %% Tests
  %%----------------------------------------------------------------------------
  
  proper_test_() ->
      [{atom_to_list(F),
        fun () -> ?assert(proper:quickcheck(?MODULE:F(), [long_result])) end}
       || {F, 0} <- ?MODULE:module_info(exports), F > 'prop_', F < 'prop`'].
  
  %% Local variables:
  %% mode: erlang
  
negative.code: -module(dk_q).
  -include_lib("proper/include/proper.hrl").
  
  %% API
  -export([from_str/2]).
  