Skip to content

Commit 2800c6e

Browse files
committed
More list-related functions
1 parent 0a3932a commit 2800c6e

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

lyh07.hs

+45-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,48 @@
11
-- LYH Chapter 7. Modules --
22

33

4-
-- NEXT: here
4+
import Data.List
5+
import Data.Function (on)
6+
7+
-- More list-related functions
8+
-- `intersperse', `intercalate', `transpose', `concat'
9+
join xs xss = concat (intersperse xs xss)
10+
join' = intercalate
11+
12+
-- `iterate'
13+
twoPowers = iterate (*2) 1
14+
15+
-- `sort', `group', `groupBy', `nub', `nubBy'
16+
-- A codewars kata
17+
uniqueInOrder :: (Ord a, Eq a) => [a] -> [a]
18+
uniqueInOrder = sort . nub
19+
uniqueInOrder' :: (Ord a, Eq a) => [a] -> [a]
20+
uniqueInOrder' = nub . sort
21+
uniqueInOrder'' :: (Ord a, Eq a) => [a] -> [a]
22+
uniqueInOrder'' = map head . group . sort
23+
24+
-- `inits', `tails'
25+
26+
-- `find' (-> Maybe a), `findIndex' (-> Maybe a), `findIndices' (-> [a])
27+
28+
-- `isPrefixOf', `isInfixOf', `isSuffixOf'
29+
30+
-- `elemIndex' (-> Maybe a), `elemIndices' (-> [a])
31+
32+
-- `delete', `deleteBy' `(\\)'
33+
34+
-- `union', `unionBy', `intersect', `intersectBy'
35+
-- `insert'
36+
37+
-- `generic{Length,Take,Drop,SplitAt,Index,Replicate}' and
38+
-- length,take,drop,splitAt,(!!), replicate
39+
40+
-- `on' from Data.Function
41+
sameSign :: (Num a, Ord a) => a -> a -> Bool
42+
sameSign = (==) `on` (compare 0)
43+
sameSign' :: (Num a, Ord a) => a -> a -> Bool
44+
sameSign' = (==) `on` signum
45+
46+
-- `sortBy', `insertBy', `maximumBy', `minimumBy'
47+
48+
-- NEXT: Data.Char

rwh03.hs

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ nodesAreSame _ _ = False
5959

6060
-- RWH ch03 ex07
6161
-- Similar to join in python
62+
-- Actually the same as `intercalate' in Data.List
6263
intersperse _ [] = []
6364
intersperse _ [x] = x
6465
intersperse j (x:xs) = x ++ j ++ intersperse j xs

0 commit comments

Comments
 (0)