Implement hope_list:first_match/2
[hope.git] / src / hope_list.erl
index abfb3d3..f179d1a 100644 (file)
@@ -10,6 +10,7 @@
     , map/3  % Tunable recursion limit
     , map_rev/2
     , map_slow/2
+    , first_match/2
     ]).
 
 
@@ -102,3 +103,13 @@ unique_preserve_order(L) ->
             end
         end,
     lists:reverse(lists:foldl(PrependIfNew, [], L)).
+
+-spec first_match([{Tag, fun((A) -> boolean())}], A) ->
+    hope_option:t(Tag).
+first_match([], _) ->
+    none;
+first_match([{Tag, F} | Tests], X) ->
+    case F(X)
+    of  true  -> {some, Tag}
+    ;   false -> first_match(Tests, X)
+    end.
This page took 0.025621 seconds and 4 git commands to generate.