Skip to content

Commit 12402ae

Browse files
committed
feat(array): add keepSome
1 parent 307da89 commit 12402ae

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

src/Core__Array.mjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,12 @@ function filterMap(a, f) {
130130
return r;
131131
}
132132

133+
function keepSome(__x) {
134+
return filterMap(__x, (function (x) {
135+
return x;
136+
}));
137+
}
138+
133139
function flatMap(a, f) {
134140
return Caml_splice_call.spliceObjApply([], "concat", [a.map(f)]);
135141
}
@@ -162,6 +168,7 @@ export {
162168
findIndexOpt ,
163169
reverse ,
164170
filterMap ,
171+
keepSome ,
165172
shuffle ,
166173
shuffleInPlace ,
167174
flatMap ,

src/Core__Array.res

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,8 @@ let filterMapU = (a, f) => {
222222

223223
let filterMap = (a, f) => filterMapU(a, (. a) => f(a))
224224

225+
let keepSome = filterMap(_, x => x)
226+
225227
// TODO: Change this implementation?
226228
let flatMap = (a, f) => []->concatMany(map(a, f))
227229

src/Core__Array.resi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ external setUnsafe: (array<'a>, int, 'a) => unit = "%array_unsafe_set"
103103
let findIndexOpt: (array<'a>, 'a => bool) => option<int>
104104
let reverse: array<'a> => array<'a>
105105
let filterMap: (array<'a>, 'a => option<'b>) => array<'b>
106+
let keepSome: array<option<'a>> => array<'a>
106107
let shuffle: array<'a> => array<'a>
107108
let shuffleInPlace: array<'a> => unit
108109
let flatMap: (array<'a>, 'a => array<'b>) => array<'b>

0 commit comments

Comments
 (0)