Commit | Line | Data |
---|---|---|
cd69f1f3 SK |
1 | -module(hope_dictionary). |
2 | ||
3 | -export_type( | |
4 | [ t/2 | |
5 | ]). | |
6 | ||
7 | ||
8 | -type t(_Key, _Value) :: | |
9 | term(). | |
10 | ||
11 | ||
12 | -callback empty() -> | |
13 | t(_K, _V). | |
14 | ||
15 | -callback get(t(K, V), K) -> | |
16 | hope_option:t(V). | |
17 | ||
18 | -callback set(t(K, V), K, V) -> | |
19 | t(K, V). | |
20 | ||
21 | -callback update(t(K, V), K, fun((hope_option:t(V)) -> V)) -> | |
22 | t(K, V). | |
23 | ||
70cf8e86 SK |
24 | -callback pop(t(K, V), K) -> |
25 | {hope_option:t(V), t(K, V)}. | |
26 | ||
cd69f1f3 SK |
27 | -callback map(t(K, V), fun((K, V) -> V)) -> |
28 | t(K, V). | |
29 | ||
30 | -callback filter(t(K, V), fun((K, V) -> boolean())) -> | |
31 | t(K, V). | |
32 | ||
33 | -callback fold(t(K, V), fun((K, V, Acc) -> Acc), Acc) -> | |
34 | Acc. | |
35 | ||
36 | -callback iter(t(K, V), fun((K, V) -> ok)) -> | |
37 | ok. | |
38 | ||
37c6e98b | 39 | %% TODO: Decide if validation is to be done. If yes - wrap in hope_result:t/1 |
cd69f1f3 SK |
40 | -callback of_kv_list([{K, V}]) -> |
41 | t(K, V). | |
42 | ||
43 | -callback to_kv_list(t(K, V)) -> | |
44 | [{K, V}]. |