X-Git-Url: https://git.xandkar.net/?p=hope.git;a=blobdiff_plain;f=src%2Fhope_option.erl;h=996e3428eeac2cb66a2f4005745352a5fdd6d374;hp=02ef2f3b7f76dce72df5a6de52eb1aaa10a390c8;hb=352ddeb475ab48aabfab59558827e0e8d927551f;hpb=cb14ad76f3cc386bce964e822733e5cb9e011ed8 diff --git a/src/hope_option.erl b/src/hope_option.erl index 02ef2f3..996e342 100644 --- a/src/hope_option.erl +++ b/src/hope_option.erl @@ -19,6 +19,7 @@ , iter/2 , of_result/1 , of_undefined/1 + , validate/2 ]). @@ -80,3 +81,13 @@ of_result({error, _}) -> none. t(A). of_undefined(undefined) -> none; of_undefined(X) -> {some, X}. + +-spec validate(t(A), fun((A) -> boolean())) -> + t(A). +validate(none, _) -> + none; +validate({some, X}=T, F) -> + case F(X) + of false -> none + ; true -> T + end.