Типы в Haskell

Я являюсь довольно новым в Haskell, и я испытываю затруднения при понимании как выведенные типы и такие работы.

map :: (a -> b) -> [a] -> [b]
(.) :: (a -> b) -> (c -> a) -> c -> b

Что ТОЧНО, который означает?

foldr :: (a -> b -> b) -> b -> [a] -> b
foldl :: (a -> b -> a) -> a -> [b] -> a
foldl1 :: (a -> a -> a) -> [a] -> a

Каковы различия между ними?

И выведенный тип

foldr map [a] -> [a -> a] -> [a]

Но почему это - это?

Спасибо!

9
задан brj 24 November 2019 в 03:32
поделиться