Skip to content

Commit dec7e86

Browse files
authored
Merge pull request #4949 from amiralies/add-option-keep
Add Belt.Option.keep
2 parents 986fb5e + b06e2d4 commit dec7e86

File tree

8 files changed

+68
-18
lines changed

8 files changed

+68
-18
lines changed

jscomp/main/builtin_cmi_datasets.ml

Lines changed: 3 additions & 3 deletions
Large diffs are not rendered by default.

jscomp/main/builtin_cmj_datasets.ml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(* 84a011b3c45d00599a64776e3e265c2c *)
1+
(* 97b462db50a247b7ae260fb2f2e9d9c1 *)
22
let module_names : string array = Obj.magic (
33
"Js" (* 23 *),
44
"Arg" (* 289 *),
@@ -78,7 +78,7 @@ let module_names : string array = Obj.magic (
7878
"Pervasives" (* 3370 *),
7979
"ArrayLabels" (* 431 *),
8080
"Belt_MapInt" (* 900 *),
81-
"Belt_Option" (* 400 *),
81+
"Belt_Option" (* 431 *),
8282
"Belt_Result" (* 247 *),
8383
"Belt_SetInt" (* 657 *),
8484
"BytesLabels" (* 772 *),
@@ -210,7 +210,7 @@ let module_data : string array = Obj.magic (
210210
(* Pervasives *)"\132\149\166\190\000\000\r\022\000\000\003,\000\000\n\214\000\000\n8\160\b\000\001$\000\176!@\144\160\160B@@@\176#abs\144\160\160A@@@\176$exit\144\160\160A@@@\176$lnot\144\160\160A@@\144\148\192A\160\176\001\004\026!x@@\151\176O\160\144\004\006\160\146\160\018_i\000\255\255\255\255@@\176\1928stdlib-406/pervasives.ml\000g\001\014b\001\014o\192\004\002\000g\001\014b\001\014z@\160BA\176%flush\144\160\160A@@\144\148\192A\160\176\001\006\193$prim@@\151\176\148-caml_ml_flush\160\144\004\b@\176\192\004\022\001\001\143\0016D\0016D\192\004\023\001\001\143\0016D\0016z@\160BA\176%input\144\160\160D@@@\176&output\144\160\160D@@@\176&pos_in\144\160\160A@@\144\148\192A\160\176\001\006\174\004\031@@\151\176\148.caml_ml_pos_in\160\144\004\007@\176\192\0044\001\002\023\001Hj\001Hj\192\0045\001\002\023\001Hj\001H\160@\160BA\176'at_exit\144\160\160A@@@\176'open_in\144\160\160A@@@\176'pos_out\144\160\160A@@\144\148\192A\160\176\001\006\184\004=@@\151\176\148/caml_ml_pos_out\160\144\004\007@\176\192\004R\001\001\191\001<s\001<s\192\004S\001\001\191\001<s\001<\172@\160BA\176'seek_in\144\160\160B@@\144\148\192B\160\176\001\006\176\004Q@\160\176\001\006\175\004S@@\151\176\148/caml_ml_seek_in\160\144\004\t\160\144\004\t@\176\192\004j\001\002\022\001H)\001H)\192\004k\001\002\022\001H)\001Hi@\160BA\176(close_in\144\160\160A@@\144\148\192A\160\176\001\006\172\004i@@\151\176\1485caml_ml_close_channel\160\144\004\007@\176\192\004~\001\002\025\001H\233\001H\233\192\004\127\001\002\025\001H\233\001I)@\160BA\176(failwith\144\160\160A@A\144\148\192A\160\176\001\003\237!s@@\151\176C\160\151\176\176@C@\160\146\146'Failure\160\144\004\014@\176\192\004\153a\001\005\223\001\005\245\192\004\154a\001\005\223\001\006\000@@\176\192\004\156a\001\005\223\001\005\240\004\003@\160BA\176(open_out\144\160\160A@@@\176(read_int\144\160\160A@@@\176(seek_out\144\160\160B@@\144\148\192B\160\176\001\006\186\004\164@\160\176\001\006\185\004\166@@\151\176\1480caml_ml_seek_out\160\144\004\t\160\144\004\t@\176\192\004\189\001\001\190\001</\001</\192\004\190\001\001\190\001</\001<r@\160BA\176)LargeFile\145\224\160\160B@@\160\160A@@\160\160A@@\160\160B@@\160\160A@@\160\160A@@@\176)close_out\144\160\160A@@\144\148\192A\160\176\001\005D\"oc@@\174\151\176\148\004\205\160\144\004\b@\176\192\004\226\001\001\194\001=B\001=U\192\004\227\001\001\194\001=B\001=]@\151\176\1485caml_ml_close_channel\160\144\004\017@\176\192\004\235\001\001\194\001=B\001=_\192\004\236\001\001\194\001=B\001=s@\160BA\176)flush_all\144\160\160A@@@\176)prerr_int\144\160\160A@@@\176)print_int\144\160\160A@@@\176)read_line\144\160\160A@@@\176*do_at_exit\144\160\160A@@@\176*input_byte\144\160\160A@@\144\148\192A\160\176\001\006\179\005\001\003@@\151\176\1482caml_ml_input_char\160\144\004\007@\176\192\005\001\024\001\002\019\001Gi\001Gi\192\005\001\025\001\002\019\001Gi\001G\167@\160BA\176*input_char\144\160\160A@@\144\148\192A\160\176\001\006\180\005\001\023@@\151\176\1482caml_ml_input_char\160\144\004\007@\176\192\005\001,\001\001\217\001?\205\001?\205\192\005\001-\001\001\217\001?\205\001@\012@\160BA\176*input_line\144\160\160A@@@\176*prerr_char\144\160\160A@@@\176*print_char\144\160\160A@@@\176*read_float\144\160\160A@@@\176+char_of_int\144\160\160A@@@\176+input_value\144\160\160A@@\144\148\192A\160\176\001\006\177\005\001D@@\151\176\1480caml_input_value\160\144\004\007@\176\192\005\001Y\001\002\021\001G\236\001G\236\192\005\001Z\001\002\021\001G\236\001H(@\160BA\176+invalid_arg\144\160\160A@A\144\148\192A\160\176\001\003\239!s@@\151\176C\160\151\176\176@C@\160\146\1460Invalid_argument\160\144\004\014@\176\192\005\001tb\001\006\001\001\006\026\192\005\001ub\001\006\001\001\006.@@\176\192\005\001wb\001\006\001\001\006\021\004\003@\160BA\176+open_in_bin\144\160\160A@@@\176+open_in_gen\144\160\160C@@@\176+output_byte\144\160\160B@@\144\148\192B\160\176\001\006\190\005\001\127@\160\176\001\006\189\005\001\129@@\151\176\1483caml_ml_output_char\160\144\004\t\160\144\004\t@\176\192\005\001\152\001\001\183\001:\253\001:\253\192\005\001\153\001\001\183\001:\253\001;F@\160BA\176+output_char\144\160\160B@@\144\148\192B\160\176\001\006\192\005\001\151@\160\176\001\006\191\005\001\153@@\151\176\1483caml_ml_output_char\160\144\004\t\160\144\004\t@\176\192\005\001\176\001\001\165\0018\236\0018\236\192\005\001\177\001\001\165\0018\236\00196@\160BA\176+prerr_bytes\144\160\160A@@@\176+prerr_float\144\160\160A@@@\176+print_bytes\144\160\160A@@@\176+print_float\144\160\160A@@@\176,open_out_bin\144\160\160A@@@\176,open_out_gen\144\160\160C@@@\176,output_bytes\144\160\160B@@@\176,output_value\144\160\160B@@\144\148\192B\160\176\001\005=$chan@\160\176\001\005>!v@@\151\176\1481caml_output_value\160\144\004\011\160\144\004\n\160\146\160\018_i\000\000\000\000\000\144\176\"[]AA@\176\192\005\001\244\001\001\188\001;\247\001<\017\192\005\001\245\001\001\188\001;\247\001<-@\160BA\176,prerr_string\144\160\160A@@@\176,print_string\144\160\160A@@@\176,read_int_opt\144\160\160A@@@\176,really_input\144\160\160D@@@\176-output_string\144\160\160B@@@\176-prerr_newline\144\160\160A@@@\176-print_newline\144\160\160A@@@\176.bool_of_string\144\160\160A@@@\176.classify_float\144\160\160A@@@\176.close_in_noerr\144\160\160A@@@\176.read_float_opt\144\160\160A@@@\176.string_of_bool\144\160\160A@@\144\148\192A\160\176\001\004\231!b@@\189\144\004\004\146\146$true\146\146%false\160BA\176/close_out_noerr\144\160\160A@@@\176/string_of_float\144\160\160A@@@\1760input_binary_int\144\160\160A@@\144\148\192A\160\176\001\006\178\005\002H@@\151\176\1481caml_ml_input_int\160\144\004\007@\176\192\005\002]\001\002\020\001G\168\001G\168\192\005\002^\001\002\020\001G\168\001G\235@\160BA\1760output_substring\144\160\160D@@@\1760string_of_format\144\160\160A@@\144\148\192A\160\176\001\005\209%param@@\151\176\161AD\160\144\004\007@\176\192\005\002v\001\002^\001R\177\001R\198\192\005\002w\001\002^\001R\177\001R\218@\160BA\1761in_channel_length\144\160\160A@@\144\148\192A\160\176\001\006\173\005\002u@@\151\176\1484caml_ml_channel_size\160\144\004\007@\176\192\005\002\138\001\002\024\001H\161\001H\161\192\005\002\139\001\002\024\001H\161\001H\232@\160BA\1761int_of_string_opt\144\160\160A@@@\1761output_binary_int\144\160\160B@@\144\148\192B\160\176\001\006\188\005\002\142@\160\176\001\006\187\005\002\144@@\151\176\1482caml_ml_output_int\160\144\004\t\160\144\004\t@\176\192\005\002\167\001\001\184\001;G\001;G\192\005\002\168\001\001\184\001;G\001;\149@\160BA\1761valid_float_lexem\144\160\160A@@@\1762bool_of_string_opt\144\160\160A@@@\1762out_channel_length\144\160\160A@@\144\148\192A\160\176\001\006\183\005\002\176@@\151\176\1484caml_ml_channel_size\160\144\004\007@\176\192\005\002\197\001\001\192\001<\173\001<\173\192\005\002\198\001\001\192\001<\173\001<\246@\160BA\1762set_binary_mode_in\144\160\160B@@\144\148\192B\160\176\001\006\171\005\002\196@\160\176\001\006\170\005\002\198@@\151\176\1487caml_ml_set_binary_mode\160\144\004\t\160\144\004\t@\176\192\005\002\221\001\002\027\001Ia\001Ia\192\005\002\222\001\002\028\001I\154\001I\209@\160BA\1763float_of_string_opt\144\160\160A@@@\1763really_input_string\144\160\160B@@@\1763set_binary_mode_out\144\160\160B@@\144\148\192B\160\176\001\006\182\005\002\230@\160\176\001\006\181\005\002\232@@\151\176\1487caml_ml_set_binary_mode\160\144\004\t\160\144\004\t@\176\192\005\002\255\001\001\198\001=\214\001=\214\192\005\003\000\001\001\199\001>\017\001>I@\160BA\1763unsafe_really_input\144\160\160D@@@A",
211211
(* ArrayLabels *)"\132\149\166\190\000\000\001\155\000\000\000\133\000\000\001\173\000\000\001\148\160\b\000\000l\000\176#map\144\160\160B@@@\176#mem\144\160\160B@@@\176#sub\144\160\160C@@@\176$blit\144\160\160E@@@\176$copy\144\160\160A@@@\176$fill\144\160\160D@@@\176$init\144\160\160B@@@\176$iter\144\160\160B@@@\176$map2\144\160\160C@@@\176$mapi\144\160\160B@@@\176$memq\144\160\160B@@@\176$sort\144\160\160B@@@\176%iter2\144\160\160C@@@\176%iteri\144\160\160B@@@\176&append\144\160\160B@@@\176&concat\144\160\160A@@@\176&exists\144\160\160B@@@\176'for_all\144\160\160B@@@\176'of_list\144\160\160A@@@\176'to_list\144\160\160A@@@\176)fast_sort\144\160\160B@@@\176)fold_left\144\160\160C@@@\176*fold_right\144\160\160C@@@\176*make_float\144\160\160A@@@\176+make_matrix\144\160\160C@@@\176+stable_sort\144\004\025@\176-create_matrix\144\004\b@A",
212212
(* Belt_MapInt *)"\132\149\166\190\000\000\003p\000\000\001\011\000\000\003i\000\000\0031\160\b\000\000\212\000\176\"eq\144\160\160C@@@\176#cmp\144\160\160C@@@\176#eqU\144\160\160C@@@\176#get\144\160\160B@@@\176#has\144\160\160B@@@\176#map\144\160\160B@@@\176#set\144\160\160C@@@\176$cmpU\144\160\160C@@@\176$keep\144\160\160B@@@\176$mapU\144\160\160B@@@\176$size\144\160\160A@@@\176$some\144\160\160B@@@\176%empty\144@\144\146A\176%every\144\160\160B@@@\176%keepU\144\160\160B@@@\176%merge\144\160\160C@@@\176%someU\144\160\160B@@@\176%split\144\160\160B@@@\176&everyU\144\160\160B@@@\176&getExn\144\160\160B@@@\176&maxKey\144\160\160A@@@\176&mergeU\144\160\160C@@@\176&minKey\144\160\160A@@@\176&reduce\144\160\160C@@@\176&remove\144\160\160B@@@\176&toList\144\160\160A@@@\176&update\144\160\160C@@@\176'forEach\144\160\160B@@@\176'isEmpty\144\160\160A@@@\176'maximum\144\160\160A@@@\176'minimum\144\160\160A@@@\176'reduceU\144\160\160C@@@\176'toArray\144\160\160A@@@\176'updateU\144\160\160C@@@\176(forEachU\144\160\160B@@@\176)fromArray\144\160\160A@@@\176)mergeMany\144\160\160B@@@\176)partition\144\160\160B@@@\176*mapWithKey\144\160\160B@@@\176*partitionU\144\160\160B@@@\176*removeMany\144\160\160B@@@\176+findFirstBy\144\160\160B@@@\176+keysToArray\144\160\160A@@@\176+mapWithKeyU\144\160\160B@@@\176,findFirstByU\144\160\160B@@@\176,getUndefined\144\160\160B@@@\176,maxUndefined\144\160\160A@@@\176,minUndefined\144\160\160A@@@\176-valuesToArray\144\160\160A@@@\176.getWithDefault\144\160\160C@@@\176/maxKeyUndefined\144\160\160A@@@\176/minKeyUndefined\144\160\160A@@@\1766checkInvariantInternal\144\160\160A@@@A",
213-
(* Belt_Option *)"\132\149\166\190\000\000\001|\000\000\000r\000\000\001s\000\000\001`\160\b\000\000@\000\176\"eq\144\160\160C@@@\176#cmp\144\160\160C@@@\176#eqU\144\160\160C@@@\176#map\144\160\160B@@@\176$cmpU\144\160\160C@@@\176$mapU\144\160\160B@@@\176&getExn\144\160\160A@@@\176&isNone\144\160\160A@@\144\148\192A\160\176\001\004\129!x@@\151\176\153@\160\144\004\007\160\146A@\176\1925others/belt_Option.ml\127\001\b]\001\bl\192\004\002\127\001\b]\001\bt@\160BA\176&isSome\144\160\160A@@\144\148\192A\160\176\001\004\127%param@@\151\176\000K\160\144\004\006@\176\192\004\020|\001\b7\001\b;\192\004\021|\001\b7\001\bA@\160BA\176'flatMap\144\160\160B@@@\176'forEach\144\160\160B@@@\176(flatMapU\144\160\160B@@@\176(forEachU\144\160\160B@@@\176.getWithDefault\144\160\160B@@@\176.mapWithDefault\144\160\160C@@@\176/mapWithDefaultU\144\160\160C@@@A",
213+
(* Belt_Option *)"\132\149\166\190\000\000\001\155\000\000\000|\000\000\001\147\000\000\001~\160\b\000\000H\000\176\"eq\144\160\160C@@@\176#cmp\144\160\160C@@@\176#eqU\144\160\160C@@@\176#map\144\160\160B@@@\176$cmpU\144\160\160C@@@\176$keep\144\160\160B@@@\176$mapU\144\160\160B@@@\176%keepU\144\160\160B@@@\176&getExn\144\160\160A@@@\176&isNone\144\160\160A@@\144\148\192A\160\176\001\004\138!x@@\151\176\153@\160\144\004\007\160\146A@\176\1925others/belt_Option.ml\000F\001\b\234\001\b\249\192\004\002\000F\001\b\234\001\t\001@\160BA\176&isSome\144\160\160A@@\144\148\192A\160\176\001\004\136%param@@\151\176\000K\160\144\004\006@\176\192\004\020\000C\001\b\196\001\b\200\192\004\021\000C\001\b\196\001\b\206@\160BA\176'flatMap\144\160\160B@@@\176'forEach\144\160\160B@@@\176(flatMapU\144\160\160B@@@\176(forEachU\144\160\160B@@@\176.getWithDefault\144\160\160B@@@\176.mapWithDefault\144\160\160C@@@\176/mapWithDefaultU\144\160\160C@@@A",
214214
(* Belt_Result *)"\132\149\166\190\000\000\000\227\000\000\000H\000\000\000\231\000\000\000\218\160\b\000\0008\000\176\"eq\144\160\160C@@@\176#cmp\144\160\160C@@@\176#eqU\144\160\160C@@@\176#map\144\160\160B@@@\176$cmpU\144\160\160C@@@\176$isOk\144\160\160A@@@\176$mapU\144\160\160B@@@\176&getExn\144\160\160A@@@\176'flatMap\144\160\160B@@@\176'isError\144\160\160A@@@\176(flatMapU\144\160\160B@@@\176.getWithDefault\144\160\160B@@@\176.mapWithDefault\144\160\160C@@@\176/mapWithDefaultU\144\160\160C@@@A",
215215
(* Belt_SetInt *)"\132\149\166\190\000\000\002}\000\000\000\197\000\000\002\130\000\000\002Y\160\b\000\000\156\000\176\"eq\144\160\160B@@@\176#add\144\160\160B@@@\176#cmp\144\160\160B@@@\176#get\144\160\160B@@@\176#has\144\160\160B@@@\176$diff\144\160\160B@@@\176$keep\144\160\160B@@@\176$size\144\160\160A@@@\176$some\144\160\160B@@@\176%empty\144@\144\146A\176%every\144\160\160B@@@\176%keepU\144\160\160B@@@\176%someU\144\160\160B@@@\176%split\144\160\160B@@@\176%union\144\160\160B@@@\176&everyU\144\160\160B@@@\176&getExn\144\160\160B@@@\176&reduce\144\160\160C@@@\176&remove\144\160\160B@@@\176&subset\144\160\160B@@@\176&toList\144\160\160A@@@\176'forEach\144\160\160B@@@\176'isEmpty\144\160\160A@@@\176'maximum\144\160\160A@@@\176'minimum\144\160\160A@@@\176'reduceU\144\160\160C@@@\176'toArray\144\160\160A@@@\176(forEachU\144\160\160B@@@\176)fromArray\144\160\160A@@@\176)intersect\144\160\160B@@@\176)mergeMany\144\160\160B@@@\176)partition\144\160\160B@@@\176*partitionU\144\160\160B@@@\176*removeMany\144\160\160B@@@\176,getUndefined\144\160\160B@@@\176,maxUndefined\144\160\160A@@@\176,minUndefined\144\160\160A@@@\1765fromSortedArrayUnsafe\144\160\160A@@@\1766checkInvariantInternal\144\160\160A@@@A",
216216
(* BytesLabels *)"\132\149\166\190\000\000\002\240\000\000\000\212\000\000\002\199\000\000\002\149\160\b\000\000\168\000\176#cat\144\160\160B@@@\176#map\144\160\160B@@@\176#sub\144\160\160C@@@\176$blit\144\160\160E@@@\176$copy\144\160\160A@@@\176$fill\144\160\160D@@@\176$init\144\160\160B@@@\176$iter\144\160\160B@@@\176$make\144\160\160B@@@\176$mapi\144\160\160B@@@\176$trim\144\160\160A@@@\176%equal\144\160\160B@@@\176%index\144\160\160B@@@\176%iteri\144\160\160B@@@\176&concat\144\160\160B@@@\176&extend\144\160\160C@@@\176&rindex\144\160\160B@@@\176'compare\144\160\160B@@@\176'escaped\144\160\160A@@@\176(contains\144\160\160B@@@\176)index_opt\144\160\160B@@@\176)lowercase\144\160\160A@@@\176)of_string\144\160\160A@@@\176)to_string\144\160\160A@@@\176)uppercase\144\160\160A@@@\176*capitalize\144\160\160A@@@\176*index_from\144\160\160C@@@\176*rindex_opt\144\160\160B@@@\176*sub_string\144\160\160C@@@\176+blit_string\144\160\160E@@@\176+rindex_from\144\160\160C@@@\176,uncapitalize\144\160\160A@@@\176-contains_from\144\160\160C@@@\176.index_from_opt\144\160\160C@@@\176.rcontains_from\144\160\160C@@@\176/lowercase_ascii\144\160\160A@@@\176/rindex_from_opt\144\160\160C@@@\176/uppercase_ascii\144\160\160A@@@\1760capitalize_ascii\144\160\160A@@@\1760unsafe_of_string\144\160\160A@@@\1760unsafe_to_string\144\160\160A@@@\1762uncapitalize_ascii\144\160\160A@@@A",

jscomp/others/belt_Option.ml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@
2222
* along with this program; if not, write to the Free Software
2323
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
2424

25+
26+
let keepU opt p = match opt with
27+
| Some x as some when (p x [@bs]) -> some
28+
| _ -> None
29+
30+
let keep opt p = keepU opt (fun[@bs] x -> p x)
31+
2532
let forEachU opt f = match opt with
2633
| Some x -> (f x [@bs])
2734
| None -> ()

jscomp/others/belt_Option.mli

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,23 @@
2727
Utilities for option data type
2828
*)
2929

30+
31+
val keepU : 'a option -> ('a -> bool [@bs]) -> 'a option
32+
(** Uncurried version of [keep] *)
33+
34+
val keep : 'a option -> ('a -> bool) -> 'a option
35+
(**
36+
[keep optionValue p]
37+
38+
If [optionValue] is [Some value] and [p value = true], it returns [Some value]; otherwise returns [None]
39+
40+
@example {[
41+
keep (Some 10)(fun x -> x > 5);; (* returns [Some 10] *)
42+
keep (Some 4)(fun x -> x > 5);; (* returns [None] *)
43+
keep None (fun x -> x > 5);; (* returns [None] *)
44+
]}
45+
*)
46+
3047
val forEachU : 'a option -> ('a -> unit [@bs]) -> unit
3148
(** Uncurried version of [forEach] *)
3249

lib/4.06.1/unstable/js_compiler.ml

Lines changed: 6 additions & 6 deletions
Large diffs are not rendered by default.

lib/4.06.1/whole_compiler.ml

Lines changed: 6 additions & 6 deletions
Large diffs are not rendered by default.

lib/es6/belt_Option.mjs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@
33
import * as Curry from "./curry.mjs";
44
import * as Caml_option from "./caml_option.mjs";
55

6+
function keepU(opt, p) {
7+
if (opt !== undefined && p(Caml_option.valFromOption(opt))) {
8+
return opt;
9+
}
10+
11+
}
12+
13+
function keep(opt, p) {
14+
return keepU(opt, Curry.__1(p));
15+
}
16+
617
function forEachU(opt, f) {
718
if (opt !== undefined) {
819
return f(Caml_option.valFromOption(opt));
@@ -109,6 +120,8 @@ function cmp(a, b, f) {
109120
}
110121

111122
export {
123+
keepU ,
124+
keep ,
112125
forEachU ,
113126
forEach ,
114127
getExn ,

lib/js/belt_Option.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@
33
var Curry = require("./curry.js");
44
var Caml_option = require("./caml_option.js");
55

6+
function keepU(opt, p) {
7+
if (opt !== undefined && p(Caml_option.valFromOption(opt))) {
8+
return opt;
9+
}
10+
11+
}
12+
13+
function keep(opt, p) {
14+
return keepU(opt, Curry.__1(p));
15+
}
16+
617
function forEachU(opt, f) {
718
if (opt !== undefined) {
819
return f(Caml_option.valFromOption(opt));
@@ -108,6 +119,8 @@ function cmp(a, b, f) {
108119
return cmpU(a, b, Curry.__2(f));
109120
}
110121

122+
exports.keepU = keepU;
123+
exports.keep = keep;
111124
exports.forEachU = forEachU;
112125
exports.forEach = forEach;
113126
exports.getExn = getExn;

0 commit comments

Comments
 (0)