Никаких сомнений насчет этого. Я просто чувствовал, что явное каррирование (и явные замыкания) может помочь понять концепции немного лучше
нь новичок в Haskell и FP в целом. Я прочитал много работ, в которых описывается, что такое карри, но я не нашел объяснения тому, как это на самом деле работает.
Вот функция:(+) :: a -> (a -> a)
Если я сделаю(+) 4 7
, функция принимает4
и возвращает функцию, которая принимает7
и возвращается11
, Но что происходит с4
? Что эта первая функция делает с4
? Что значит(a -> a)
делать с7
?
Все становится более запутанным, когда я думаю о более сложной функции:
max' :: Int -> (Int -> Int)
max' m n | m > n = m
| otherwise = n
что значит(Int -> Int)
сравнить его параметр с? Требуется только один параметр, но для этого нужно дваm > n
.