Add the haskell book
This commit is contained in:
53
Haskell-book/10/Exercise.hs
Normal file
53
Haskell-book/10/Exercise.hs
Normal file
@@ -0,0 +1,53 @@
|
||||
module Exercise where
|
||||
|
||||
stops :: String
|
||||
stops = "pbtdkg"
|
||||
|
||||
vowels :: String
|
||||
vowels = "aeiou"
|
||||
|
||||
stopVowelStop :: [(Char, Char, Char)]
|
||||
stopVowelStop = filter p [(x, y, z) | x <- stops, y <- vowels, z <- stops]
|
||||
where p (a, _, _) = a == 'p'
|
||||
|
||||
seekritFunc :: String -> Double
|
||||
seekritFunc x = (/) (fromIntegral (sum (map length (words x)))) (fromIntegral (length (words x)))
|
||||
|
||||
myAnd :: [Bool] -> Bool
|
||||
myAnd = foldr (&&) True
|
||||
|
||||
myOr :: [Bool] -> Bool
|
||||
myOr = foldr (||) False
|
||||
|
||||
myAny :: (a -> Bool) -> [a] -> Bool
|
||||
myAny f = myOr . map f
|
||||
|
||||
myElem :: Eq a => a -> [a] -> Bool
|
||||
myElem x = foldr (\y z -> z || (y == x)) False
|
||||
|
||||
myElem' :: Eq a => a -> [a] -> Bool
|
||||
myElem' needle = any (\x -> x == needle)
|
||||
|
||||
myReverse :: [a] -> [a]
|
||||
myReverse = foldl (flip (:)) []
|
||||
|
||||
myMap :: (a -> b) -> [a] -> [b]
|
||||
myMap f = foldr (\x y -> (f x) : y) []
|
||||
|
||||
myFilter :: (a -> Bool) -> [a] -> [a]
|
||||
myFilter f = foldr (\x xs -> if f x then x : xs else xs) []
|
||||
|
||||
squish :: [[a]] -> [a]
|
||||
squish = foldr (++) []
|
||||
|
||||
squishMap :: (a -> [b]) -> [a] -> [b]
|
||||
squishMap f xs = foldr (++) [] (map f xs)
|
||||
|
||||
squishAgain :: [[a]] -> [a]
|
||||
squishAgain = squishMap id
|
||||
|
||||
myMaximumBy :: (a -> a -> Ordering) -> [a] -> a
|
||||
myMaximumBy f (z:zs) = foldl (\x y -> if (f x y) == GT then x else y) z zs
|
||||
|
||||
myMinimumBy :: (a -> a -> Ordering) -> [a] -> a
|
||||
myMinimumBy f (z:zs) = foldl (\x y -> if (f x y) == LT then x else y) z zs
|
||||
Reference in New Issue
Block a user