Define a general, dictionary interface/behavior.
[hope.git] / src / hope_dictionary.erl
diff --git a/src/hope_dictionary.erl b/src/hope_dictionary.erl
new file mode 100644 (file)
index 0000000..2e3a59d
--- /dev/null
@@ -0,0 +1,40 @@
+-module(hope_dictionary).
+
+-export_type(
+    [ t/2
+    ]).
+
+
+-type t(_Key, _Value) ::
+    term().
+
+
+-callback empty() ->
+    t(_K, _V).
+
+-callback get(t(K, V), K) ->
+    hope_option:t(V).
+
+-callback set(t(K, V), K, V) ->
+    t(K, V).
+
+-callback update(t(K, V), K, fun((hope_option:t(V)) -> V)) ->
+    t(K, V).
+
+-callback map(t(K, V), fun((K, V) -> V)) ->
+    t(K, V).
+
+-callback filter(t(K, V), fun((K, V) -> boolean())) ->
+    t(K, V).
+
+-callback fold(t(K, V), fun((K, V, Acc) -> Acc), Acc) ->
+    Acc.
+
+-callback iter(t(K, V), fun((K, V) -> ok)) ->
+    ok.
+
+-callback of_kv_list([{K, V}]) ->
+    t(K, V).
+
+-callback to_kv_list(t(K, V)) ->
+    [{K, V}].
This page took 0.028123 seconds and 4 git commands to generate.