anchor.diff:  replace([Head|Tail], N, Index, Value) ->
     [Head|replace(Tail, N + 1, Index, Value)].
   
  -convert(Value) -> reia_dispatch:call(Value, to_s, [], nil).+convert(Value) -> reia_dispatch:call(Value, to_s, [], nil).
  +
  +join_list(Result, [Elem], _) ->
  +  lists:reverse([element_to_string(Elem)|Result]);
  +join_list(Result, [Elem|Rest], Separator) ->
  +  join_list([Separator,element_to_string(Elem)|Result], Rest, Separator).
  +  
  +element_to_string(Elem) ->
  +  reia_dispatch:call(Elem, to_s, {}, nil).
positive.code: 
  -module('List').
  -export([call/4]).
  
  call(List, '[]', {Index}, _Block) ->
    if
  
negative.code:   lists:flatten(["[", string:join([convert(Elem) || Elem <- List], ","), "]"]);
  
  call(List, reverse, _Args, _Block) ->
    lists:reverse(List);
    
  call(List, join, {}, Block) ->
    call(List, join, {#reia_string{members=[]}}, Block);
  call(List, join, {#reia_string{members=Separator}}, _Block) ->
    Members = case List of
      [] -> #reia_string{members=[]};
      _  -> join_list([], List, Separator)
    end,
    #reia_string{members=Members}.
  
  replace(List, Index, Value) ->
    replace(List, 0, Index, Value).
  