-callback update(t(K, V), K, fun((hope_option:t(V)) -> V)) ->
t(K, V).
+-callback pop(t(K, V), K) ->
+ {hope_option:t(V), t(K, V)}.
+
-callback map(t(K, V), fun((K, V) -> V)) ->
t(K, V).
-callback iter(t(K, V), fun((K, V) -> ok)) ->
ok.
+%% TODO: Decide if validation is to be done. If yes - wrap in hope_result:t/1
-callback of_kv_list([{K, V}]) ->
t(K, V).