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