Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --1 Напишите ф-ю, рез-т кот-ой: а)[2, 4, 5, 3, 2]; б) [2, 5]
- import Control.Monad
- fs = [\x -> 2*x, \x -> 3+x, \x -> 4-x]
- as = [1, 2]
- --а)
- f1 = [a $ b | a <- fs, b <- as]
- --б)
- f2 = zipWith ($) fs as
- --в терминале: fs <*> as
- mf = Just (\x -> x / 0)
- ma :: Maybe Double
- ma = Just 6
- --2 foldr f ini [x1, x2, x3] == (x1 `f` (x2 `f` (x3 `f` ini)))
- -- (f x1 (f x2 (f x3 ini)))
- --3 foldl f ini [x1, x2, x3] == (((ini `f` x1) `f` x2) `f` x3)
- --Класс типов Foldable
- -- class Foldable where
- -- foldr :: (a -> b -> b) -> b -> t a -> b
- -- foldr :: (b -> a -> b) -> b -> t a -> b
- --
- -- instance Foldable [] where
- -- foldr f ini [] = ini
- -- foldr f ini (x:xs) = f x (foldr f ini xs)
- --
- -- foldl f ini [] = ini
- -- foldl f ini (x:xs) = foldl f (f ini x) xs
- --
- -- instance Foldable Maybe where
- -- foldr _ ini Nothing = ini
- -- foldr f ini (Just x) = f x ini
- --
- -- foldl _ ini Nothing = ini
- -- foldl f ini (Just x) = f ini x
- --4
- -- *Main> foldr (*) 3 (Just 14)
- -- 42
- -- *Main> foldl (-) 3 Nothing
- -- 3
- -- *Main> foldl (-) 3 (Just 14)
- -- -11
- -- *Main> foldr (-) 3 (Just 14)
- -- 11
- -- *Main> foldr (*) 2 (13, 14)
- -- 28
- -- *Main> foldl (*) 3 (Right 14)
- -- 42
- -- *Main> foldl (*) 3 (Left 14)
- -- 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement