-
Notifications
You must be signed in to change notification settings - Fork 1
/
lab3.hs
58 lines (44 loc) · 1.9 KB
/
lab3.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
57
module Lab4 where
------------------------------------------------------------------------------------------------------------------------------
-- RECURSIVE FUNCTIONS
------------------------------------------------------------------------------------------------------------------------------
import Data.Char
-- ===================================
-- Ex. 0
-- ===================================
triangle :: Integer -> Integer
triangle 0 = 0
triangle n = n + triangle (n-1)
-- ===================================
-- Ex. 1
-- ===================================
count :: Eq a => a -> [a] -> Int
count a [] = 0
count a (x : xs) = count a xs + if x == a then 1 else 0
xs = [1,2,35,2,3,4,8,2,9,0,5,2,8,4,9,1,9,7,3,9,2,0,5,2,7,6,92,8,3,6,1,9,2,4,8,7,1,2,8,0,4,5,2,3,6,2,3,9,8,4,7,1,4,0,1,8,4,1,2,4,56,7,2,98,3,5,28,4,0,12,4,6,8,1,9,4,8,62,3,71,0,3,8,10,2,4,7,12,9,0,3,47,1,0,23,4,8,1,20,5,7,29,3,5,68,23,5,6,3,4,98,1,0,2,3,8,1]
ys = map (\x -> ((x + 1) * 3) ^ 3 - 7) xs
poem = [ "Three Types for the Lisp-kings under the parentheses,"
, "Seven for the Web-lords in their halls of XML,"
, "Nine for C Developers doomed to segfault,"
, "One for the Dark Lord on his dark throne"
, "In the Land of Haskell where the Monads lie."
, "One Type to rule them all, One Type to find them,"
, "One Type to bring them all and in the Lambda >>= them"
, "In the Land of Haskell where the Monads lie."
]
-- ===================================
-- Ex. 2
-- ===================================
euclid :: (Int, Int) -> Int
euclid (x, y)
| x == y = x
| x < y = euclid (y ,x)
| otherwise = euclid (x - y, y)
-- ===================================
-- Ex. 3
-- ===================================
funkyMap :: (a -> b) -> (a -> b) -> [a] -> [b]
funkyMap f g xs = fm f g (zip [0..(length xs)-1] xs)
where
fm f g [] = []
fm f g ((i,y):ys) = (if even i then f y else g y) : fm f g ys