anchor.diff:            ],
     maps:from_list(Pairs).
   
  +%% @doc Formats error messages including file location information
  +%% when available.
   -spec format_error(any(), clj_reader:location() | ?NIL) -> binary().
   format_error(List, Location) when is_list(List) ->
     Reason = error_msg_to_binary(List),
  
positive.code:   end;
  do_number_type(_, _, Result) ->
    Result.
  
  %% @doc Like lists:nth/2 but returns nil if `Index' is
  %%      larger than the amount of elements in `List'.
  nth(Index, List) ->
    case Index =< length(List) of
      true  -> lists:nth(Index, List);
      false -> ?ERROR(<<"Index out of bounds">>)
    end.
  
  nth(Index, List, Default) ->
    case Index =< length(List) of
      true -> lists:nth(Index, List);
      false -> Default
    end.
  
  -spec location_to_binary(?NIL | clj_reader:location()) -> binary().
  location_to_binary(#{line := Line, column := Col, file := Filename})
  
negative.code: %% Exported functions
  %%------------------------------------------------------------------------------
  
  %% @doc Parses a binary into an integer or a float.
  %%
  %% Generates an error when it can't parse the input into a either.
  -spec parse_number(binary(), [{number_type(), re:mp()}]) -> number().
  parse_number(Number, Types) ->
    Result = case number_type(Number, Types) of
  