anchor.diff:      $= -> read_eval(NewState);
       ${ -> read_set(NewState);
       $[ -> read_tuple(NewState);
  -    $< -> throw(<<"Unreadable form">>);
       $" -> read_regex(NewState);
       $! -> read_comment(NewState);
       $_ -> read_discard(NewState);
       $? -> read_cond(NewState);
       $: -> read_erl_fun(NewState);
  -    X -> throw({unsupported_reader, <<"#", X>>})
  +    $< -> throw(<<"Unreadable form">>);
  +    X  -> throw({unsupported_reader, <<"#", X>>})
     end.
   
   %%------------------------------------------------------------------------------
  
positive.code: 
    FnSymbol = clj_core:symbol(<<"fn*">>),
    FnForm = clj_core:list([FnSymbol, ArgsVector, Form]),
  
    push_form(FnForm, NewState).
  
  %%------------------------------------------------------------------------------
  %% #= eval
  
negative.code: %% #() fn
  %%------------------------------------------------------------------------------
  
  read_fn(#{loc := Loc} = State) ->
    case erlang:get(arg_env) of
      undefined -> ok;
      _         -> throw(<<"Nested #()s are not allowed">>)
  