anchor.diff:  
   str(#{?TYPE := ?M} = Vector) ->
     clj_rt:print_str(Vector).
  +
  +%%------------------------------------------------------------------------------
  +%% Helper functions
  +%%------------------------------------------------------------------------------
  +
  +is_valid_index(Array, Index) ->
  +  is_integer(Index) andalso Index >= 0 andalso Index < array:size(Array).
  
positive.code: %% clojerl.IIndexed
  
  nth(#{?TYPE := ?M, array := Array}, N) ->
    case N < array:size(Array) of
      true  -> array:get(N, Array);
      false -> error(badarg)
    end.
  
  nth(#{?TYPE := ?M, array := Array}, N, NotFound) ->
    case N < array:size(Array) of
      true  -> array:get(N, Array);
      false -> NotFound
    end.
  
negative.code: 
  %% clojerl.IFn
  
  apply(#{?TYPE := ?M, array := Array}, [Index]) when is_integer(Index) ->
    ?ERROR_WHEN(not is_valid_index(Array, Index), <<"Index out of bounds">>),
    array:get(Index, Array);
  apply(#{?TYPE := ?M}, [_]) ->
    ?ERROR(<<"Key must be integer">>);
  apply(#{?TYPE := ?M}, Args) ->
    CountBin = integer_to_binary(length(Args)),
    ?ERROR(<<"Wrong number of args for vector, got: ", CountBin/binary>>).
  
  %% clojerl.IHash
  
  