d820b7bc90b2d10ba719508c8f4182c08497c678
[hope.git] / src / hope_option.erl
1 -module(hope_option).
2
3
4 -export_type(
5 [ t/1
6 ]).
7
8 -export(
9 [ put/2
10 , get/2
11 , map/2
12 , iter/2
13 ]).
14
15
16 -type t(A) ::
17 none
18 | {some, A}
19 .
20
21
22 -spec put(A, fun((A) -> boolean())) ->
23 t(A).
24 put(X, F) ->
25 case F(X)
26 of true -> {some, X}
27 ; false -> none
28 end.
29
30 -spec get(t(A), Default :: A) ->
31 A.
32 get({some, X}, _) -> X;
33 get(none , Y) -> Y.
34
35 -spec map(t(A), fun((A) -> (B))) ->
36 t(B).
37 map({some, X}, F) -> {some, F(X)};
38 map(none , _) -> none.
39
40 -spec iter(t(A), fun((A) -> (ok))) ->
41 ok.
42 iter({some, X}, F) -> ok = F(X);
43 iter(none , _) -> ok.
This page took 0.042735 seconds and 3 git commands to generate.