Skip to content

Commit 15e896e

Browse files
committed
Merge pull request #1 from purescript/mapmaybe
Add mapMaybe
2 parents 3ab09b4 + 88a531e commit 15e896e

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@
5353

5454
map :: forall a b. (a -> b) -> [a] -> [b]
5555

56+
mapMaybe :: forall a b. (a -> Maybe b) -> [a] -> [b]
57+
5658
nub :: forall a. (Eq a) => [a] -> [a]
5759

5860
nubBy :: forall a. (a -> a -> Prim.Boolean) -> [a] -> [a]

src/Data/Array.purs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module Data.Array
88
, init
99
, null
1010
, map
11+
, mapMaybe
1112
, length
1213
, elem
1314
, elemIndex
@@ -79,7 +80,7 @@ foreign import length
7980
"function length (xs) {\
8081
\ return xs.length;\
8182
\}" :: forall a. [a] -> Number
82-
83+
8384
foreign import elem
8485
"function elem(e) {\
8586
\ return function (l) {\
@@ -100,7 +101,7 @@ foreign import elemLastIndex
100101
\ return l.lastIndexOf(e);\
101102
\ };\
102103
\}" :: forall a. a -> [a] -> Number
103-
104+
104105
foreign import append
105106
"function append (l1) {\
106107
\ return function (l2) {\
@@ -186,7 +187,7 @@ foreign import concatMap
186187
\ return result;\
187188
\ };\
188189
\}" :: forall a b. (a -> [b]) -> [a] -> [b]
189-
190+
190191
foreign import map
191192
"function map (f) {\
192193
\ return function (arr) {\
@@ -199,6 +200,9 @@ foreign import map
199200
\ };\
200201
\}" :: forall a b. (a -> b) -> [a] -> [b]
201202

203+
mapMaybe :: forall a b. (a -> Maybe b) -> [a] -> [b]
204+
mapMaybe f = concatMap (maybe [] singleton <<< f)
205+
202206
foreign import filter
203207
"function filter (f) {\
204208
\ return function (arr) {\

0 commit comments

Comments
 (0)