-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchapter07.hs
56 lines (38 loc) · 2.02 KB
/
chapter07.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
-- ghc chapter07.hs
-- ./chapter07.exe
import System.IO
import Data.Char
main = do
putStrLn "Chapter 07 - Start!"
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
putStrLn "Twice"
let twice :: (a -> a) -> a -> a
twice f x = f (f x)
print (twice (* 2) 3) -- Apply 'times two' *twice* to 3 (i.e. 12)
print (twice (+ 1) 3) -- Apply 'add one' *twice* to 3 (i.e. 5)
print (twice reverse [1..10]) -- Just returns original list
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
putStrLn "Map" -- Applies function to every element in list and returns list
print (map (+1) [1..10])
print (map even [1..10])
print (map reverse ["Hello", "world!"])
print (map (map (+1)) [[1, 2, 3], [4, 5, 6]])
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
putStrLn "Filter" -- Applies function to every element in list and returns list containing only items that evaluate to true
print (filter even [1..10])
print (filter (>5) [1..10])
print (filter (/= ' ') "Hello, world!")
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
putStrLn "All" -- Retruns true if function applied to every element in list is true
print (all even [1..10])
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
putStrLn "Any" -- Retruns true if function applied to any element in list is true
print (any even [1..10])
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
putStrLn "TakeWhile"
print (takeWhile even [1..10])
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
putStrLn "DropWhile"
print (dropWhile even [1..10])
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
putStrLn "Chapter 07 - Compete!"