anchor.diff:      {value, Fun, _} = erl_eval:expr(Form, erl_eval:new_bindings()),
       Fun.
   
  +handle_strfun({Bucket, Key}, QTerm) when is_binary(Bucket), is_binary(Key) ->
  +    case fetch_src(Bucket, Key) of
  +        {ok, FunStr} ->
  +            handle_strfun(FunStr, QTerm);
  +        _ ->
  +            {bad_qterm, QTerm}
  +    end;
  +handle_strfun(FunStr, QTerm={T, QueryFun, Misc, Acc}) when is_binary(FunStr); is_list(FunStr) ->
  +    case catch define_anon_erl(FunStr) of
  +        Fun when is_function(Fun, 3) ->
  +            {phase_mod(T), phase_behavior(T, QueryFun, Acc),
  +             [{erlang, {T, {qfun, Fun}, Misc, Acc}}]};
  +        _ ->
  +            {bad_qterm, QTerm}
  +    end;
  +handle_strfun(_, QTerm) ->
  +    {bad_qterm, QTerm}.
  +
  +
   -ifdef(TEST).
   -include_lib("eunit/include/eunit.hrl").
   
  
positive.code:         = check_query_syntax(Query),
      ?assertEqual(true, erlang:is_function(Fun, 3)).
  
  -endif.
  
negative.code:                                {phase_mod(T), phase_behavior(T, QueryFun, Acc), [{erlang, QTerm}]};
                             {qfun, Fun} when is_function(Fun) ->
                                 {phase_mod(T), phase_behavior(T, QueryFun, Acc), [{erlang, QTerm}]};
                             {strfun, FunStr} ->
                                 handle_strfun(FunStr, QTerm);
                             {jsanon, JS} when is_binary(JS) ->
                                 {phase_mod(T), phase_behavior(T, QueryFun, Acc), [{javascript, QTerm}]};
                             {jsanon, {Bucket, Key}} when is_binary(Bucket),
  