Define a general, dictionary interface/behavior.
authorSiraaj Khandkar <siraaj@khandkar.net>
Tue, 12 Aug 2014 17:52:55 +0000 (13:52 -0400)
committerSiraaj Khandkar <siraaj@khandkar.net>
Tue, 12 Aug 2014 17:52:55 +0000 (13:52 -0400)
src/hope_dictionary.erl [new file with mode: 0644]

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.025325 seconds and 4 git commands to generate.