Haskell , , , , (++) (:), , , (++) x y, , x ++ y. Haskell , x ++ y (++) x y ( , ).
(++)
: (++) :: [a] -> [a] -> [a] , , . :
(++) [1, 4, 2, 5] [1, 3, 0, 2] == [1, 4, 2, 5, 1, 3, 0, 2]
(:)
[a]. (:) :: a -> [a] -> [a]. ( ), , , . :
(:) 1 [4, 2, 5] = [1, 4, 2, 5]
(<$>)
<$>, , , , , , - (<$>) :: Functor f => (a -> b) -> f a -> f b.
A Functor - . Haskell . - [] a Maybe. (<$>) f :: a -> b , [a]. - [b]. , , Functor ((<$>) Maybe , []).
, Functor (a Maybe Nothing Just x). , , , :
(+1) <$> [1, 4, 2, 5] == [2, 5, 3, 6]
(+1) <$> Nothing == Nothing
(+1) <$> (Just 2) == Just 3
(<*>)
(<*>) :: Applicative f => f (a -> b) -> f a -> f b - . Applicative.
, Applicative, : pure :: Applicative a => a -> f a (<*>) :: Applicative f => f (a -> b) -> f a -> f b ( liftA2, ).
Applicative ( , ) (, [] Maybe). ( a -> b) a s. "" , , , :
[f1, f2, ..., fm] <*> [x1, x2, ..., xn]
== [f1 x1, f1 x2, ..., f1 xn,
f2 x1, f2 x2, ..., f2 xn,
...,
fm x1, fm x2, ..., fm xn]
, , , Maybe, Nothing Nothing, Nothing, Nothing, Just (so Just f <*> Just x), a Just (f x):
Just f <*> Just x == Just (f x)
Just f <*> Nothing == Nothing
Nothing <*> Just x == Nothing
Nothing <*> Nothing == Nothing
(,)
2-: (,) :: a -> b -> (a,b), , a a b, 2-, , - . :
(,) 4 'a' == (4, 'a')
(x !!)
. , , . . :
([1, 4, 2, 5] !!) == (!!) [1, 4, 2, 5]
(!! 2) == flip (!!) 2
, , , , . :
(!! 2) [1, 4, 2, 5] == (!!) [1, 4, 2, 5]
(!!) :: [a] -> Int -> a Int, ( ).
p@(info@())
, @ (, ), .
, ( ).
, , , 2-, , :
somefunction total@(left, _) = ...
, somefunction (4, 'a'), , total (4, 'a'), left 4.