Implement hope_list:first_match/2
authorSiraaj Khandkar <siraaj@khandkar.net>
Sun, 8 Feb 2015 06:09:24 +0000 (01:09 -0500)
committerSiraaj Khandkar <siraaj@khandkar.net>
Sun, 8 Feb 2015 06:09:24 +0000 (01:09 -0500)
Returns the option of a tag of the first tag/function pair where function
returns true for the input.

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.025598 seconds and 4 git commands to generate.