Add hope_option:return/2, which accepts a condition
[hope.git] / src / hope_option.erl
index 5721628..7a87438 100644 (file)
@@ -10,6 +10,7 @@
     [ put/2
     , get/2
     , return/1
+    , return/2
     , map/2
     , iter/2
     , pipe/2
 -spec put(A, fun((A) -> boolean())) ->
     t(A).
 put(X, F) ->
-    case F(X)
-    of  true  -> {some, X}
-    ;   false -> none
-    end.
+    return(X, F).
 
 -spec get(t(A), Default :: A) ->
     A.
@@ -42,6 +40,14 @@ get(none     , Y) -> Y.
 return(X) ->
     {some, X}.
 
+-spec return(A, fun((A) -> boolean())) ->
+    t(A).
+return(X, Condition) ->
+    case Condition(X)
+    of  true  -> {some, X}
+    ;   false -> none
+    end.
+
 -spec map(t(A), fun((A) -> (B))) ->
     t(B).
 map({some, X}, F) -> {some, F(X)};
This page took 0.02747 seconds and 4 git commands to generate.