23 -spec put(A, fun((A) -> boolean())) ->
31 -spec get(t(A), Default :: A) ->
33 get({some, X}, _) -> X;
36 -spec map(t(A), fun((A) -> (B))) ->
38 map({some, X}, F) -> {some, F(X)};
39 map(none , _) -> none.
41 -spec iter(t(A), fun((A) -> (ok))) ->
43 iter({some, X}, F) -> ok = F(X);
46 -spec of_result(hope_result:t(A, _B)) ->
48 of_result({ok, X}) -> {some, X};
49 of_result({error, _}) -> none.