В своём прошлом вопросе я примерно понял что такое частичное применение:
https://qna.habr.com/q/1218774
Однако вопрос с каррированием остался открытым, как его понять?
Я пока что встал на простейшей как некоторые думают функции map, вот её сигнатура:
map :: (a -> b) -> [a] -> [b]
Итак, что такое эти ваши скобки? Ну допустим они обозначают функцию с одним аргументом типа a и возвращающую тип b.
Однако как быть с [a]? Это типо первый аргумент map ещё не вычисляя себя возвращает функцию(не b) принимающую [a]? А потом типо идёт назад и возвращает b который потом возвращается как [b], в то время как сам [a] по сути map'у то и не нужен.
Как всё это понять? Я ещё сомневаюсь что тут вообще указаны агрументы а не типы возвращаемых значений, то есть тут не указано то, что я в map посылаю. Хотя эксперименты в ghci указывают на обратное.