Skip to content

Commit 7eb1337

Browse files
committed
Merge pull request #8 from purescript/intersect
Add unsafeLast, intersect(By)
2 parents 4442096 + 2f25438 commit 7eb1337

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@
6363

6464
insertAt :: forall a. Prim.Number -> a -> [a] -> [a]
6565

66+
intersect :: forall a. (Eq a) => [a] -> [a] -> [a]
67+
68+
intersectBy :: forall a. (a -> a -> Prim.Boolean) -> [a] -> [a] -> [a]
69+
6670
last :: forall a. [a] -> Maybe a
6771

6872
length :: forall a. [a] -> Prim.Number
@@ -106,4 +110,6 @@
106110

107111
head :: forall a. [a] -> a
108112

113+
last :: forall a. [a] -> a
114+
109115
tail :: forall a. [a] -> [a]

src/Data/Array.purs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ module Data.Array
2626
, deleteBy
2727
, delete
2828
, (\\)
29+
, intersectBy
30+
, intersect
2931
, concatMap
3032
, filter
3133
, range
@@ -214,6 +216,16 @@ infix 5 \\
214216
go _ [] = []
215217
go (x:xs) ys = go xs (delete x ys)
216218

219+
intersectBy :: forall a. (a -> a -> Boolean) -> [a] -> [a] -> [a]
220+
intersectBy _ [] _ = []
221+
intersectBy _ _ [] = []
222+
intersectBy eq xs ys = filter el xs
223+
where
224+
el x = findIndex (eq x) ys >= 0
225+
226+
intersect :: forall a. (Eq a) => [a] -> [a] -> [a]
227+
intersect = intersectBy (==)
228+
217229
foreign import concatMap
218230
"function concatMap (f) {\
219231
\ return function (arr) {\

src/Data/Array/Unsafe.purs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
module Data.Array.Unsafe where
22

3+
import Prelude.Unsafe
4+
import Data.Array (length)
5+
36
head :: forall a. [a] -> a
47
head (x : _) = x
58

69
tail :: forall a. [a] -> [a]
710
tail (_ : xs) = xs
11+
12+
last :: forall a. [a] -> a
13+
last xs = unsafeIndex xs (length xs - 1)

0 commit comments

Comments
 (0)