-
Notifications
You must be signed in to change notification settings - Fork 0
/
lists.hs
42 lines (32 loc) · 973 Bytes
/
lists.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
eftBool :: Bool -> Bool -> [Bool]
eftBool f t
| f > t = []
| f < t = f : eftBool (succ f) t
| otherwise = [t]
eftOrd :: Ordering -> Ordering -> [Ordering]
eftOrd a b
| a > b = []
| a < b = a : eftOrd (succ a) b
| otherwise = [b]
eftInt :: Int -> Int -> [Int]
eftInt a b
| a > b = []
| a < b = a : eftInt (succ a) b
| otherwise = [b]
eftChar :: Char -> Char -> [Char]
eftChar a b
| a > b = []
| a < b = a : eftChar (succ a) b
| otherwise = [b]
myWords :: String -> [String]
myWords "" = []
myWords x = firstWord : myWords remainingString
where firstWord = (takeWhile (/=' ') (dropWhile (==' ') x))
remainingString = dropWhile (==' ') $ dropWhile (/=' ') $ dropWhile (==' ') x
mySplit :: String -> Char -> [String]
mySplit "" _ = []
mySplit x c = firstPart : mySplit remaining c
where firstPart = takeWhile (/=c) x
remaining = dropWhile (==c) $ dropWhile (/=c) x
myWords2 :: String -> [String]
myWords2 x = mySplit x ' '