Optimization to hyper_binary backend for sequential changes to the same index.
diff --git a/src/hyper_binary.erl b/src/hyper_binary.erl
index bfc4963..17d8833 100644
--- a/src/hyper_binary.erl
+++ b/src/hyper_binary.erl
@@ -43,6 +43,9 @@
     #dense{b = empty_binary(M), buf = [], buf_size = 0, merge_threshold = T}.
 
 
+set(Index, Value, #buffer{buf = [{Index, OldValue} | Rest]} = Buffer) ->
+    Buffer#buffer{buf = [{Index, max(Value, OldValue)} | Rest]};
+
 set(Index, Value, #buffer{buf = Buf, buf_size = BufSize} = Buffer) ->
     NewBuffer = Buffer#buffer{buf = [{Index, Value} | Buf],
                               buf_size = BufSize + 1},
@@ -82,9 +85,7 @@
 
 
 max_merge([First | Rest]) ->
-    lists:foldl(fun (B, Acc) ->
-                        max_merge(B, Acc)
-                end, First, Rest).
+    lists:foldl(fun max_merge/2, First, Rest).
 
 max_merge(#dense{b = SmallB, buf = SmallBuf, buf_size = SmallBufSize},
           #dense{b = BigB, buf = BigBuf, buf_size = BigBufSize} = Big) ->